Language: C++

#include <bits/stdc++.h>
using namespace std;

#define REP(i,n) for(int i=0;i<n;i++)
#define rep(i,n) for(int i=0;i<n;i++)
#define INF 1<<29
#define LINF LLONG_MAX/3
#define MP make_pair
#define PB push_back
#define EB emplace_back
#define ALL(v) (v).begin(),(v).end()
#define all(v) (v).begin(),(v).end()
#define debug(x) cerr<<#x<<":"<<x<<endl
#define debug2(x,y) cerr<<#x<<","<<#y":"<<x<<","<<y<<endl
#define CININIT cin.tie(0),ios::sync_with_stdio(false)
template<typename T> ostream& operator<<(ostream& os,const vector<T>& vec){ os << "["; for(const auto& v : vec){ os << v << ","; } os << "]"; return os; }

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<vi> vvi;

ll R,C;
ll N;
vector<ll> r,c,a;

int main(){
    CININIT;
    cin>>R>>C>>N;
    r.resize(N);
    c.resize(N);
    a.resize(N);
    vector<int> needx,needy;

    rep(i,N){
        cin>>r[i]>>c[i]>>a[i];
        r[i]--;
        c[i]--;
        a[i]++;
        needx.emplace_back(r[i]);
        if(r[i]+1<R) needx.emplace_back(r[i]+1);
        if(r[i]-1>=0) needx.emplace_back(r[i]-1);

        needy.emplace_back(c[i]);
        if(c[i]+1<C) needy.emplace_back(c[i]+1);
        if(c[i]-1>=0) needy.emplace_back(c[i]-1);
    }


    sort(ALL(needx));
    sort(ALL(needy));
    needx.erase(unique(needx.begin(),needx.end()),needx.end());
    needy.erase(unique(needy.begin(),needy.end()),needy.end());


    vi rr(N),cc(N);
    vi aa(N);

    for(int i=0;i<N;i++){
        rr[i] = find(all(needx),r[i]) - needx.begin();
        cc[i] = find(all(needy),c[i]) - needy.begin();
        aa[i] = a[i];
    }


    ll RR = needx.size();
    ll CC = needy.size();

    if(RR==1 or CC==1){
        cout << "Yes" << endl;
        return 0;
    }

    vector<vector<ll>> vec(RR,vector<ll>(CC,0));
    for(int i=0;i<N;i++){
        vec[rr[i]][cc[i]] = aa[i];
    }


    __int128 hoge = RR*CC;
    hoge=100000000LL/hoge;
    if(hoge<1){
        cout << "No" << endl;
        return 0;
    }

    if(RR**CC>10000000){
        cout << "No" << endl;
        return 0;
    }

    auto beg(vec);
/*{{{*/
    ll counter = -1;
    while(true){
        beg = vec;
        if(++counter==min<ll>(hoge,5)){
            cout <<"No" << endl;
            return 0;
        }
        for(int i=0;i<RR-1;i++){
            for(int j=0;j<CC-1;j++){
                if(vec[i][j]>0){
                    ll sum1 = vec[i][j]+vec[i+1][j+1];
                    ll sum2 = vec[i+1][j]+vec[i][j+1];
                    if(vec[i+1][j]==0 and vec[i][j+1]==0) continue;
                    if(sum1 == sum2) continue;

                    if(vec[i+1][j+1]!=0){
                        if(sum2 > sum1){
                            cout <<"No" << endl;
                            return 0;
                        }
                    }

                    if(vec[i+1][j+1]==0 and vec[i+1][j]!=0 and vec[i][j+1]!=0){
                        vec[i+1][j+1] = sum2 - sum1;
                        if(vec[i+1][j+1]<0){
                            cout << "No" << endl;
                            return 0;
                        }
                    }

                    if(vec[i+1][j]==0 and vec[i+1][j+1]>0 and vec[i][j+1]>0){
                        vec[i+1][j] == sum1 - sum2;
                        if(vec[i+1][j]<0){
                            cout << "No" << endl;
                            return 0;
                        }
                    }

                    if(vec[i][j+1]==0 and vec[i+1][j+1]>0 and vec[i+1][j]>0){
                        vec[i][j+1] = sum1 -sum2;
                        if(vec[i][j+1]<0){
                            cout  << "No" << endl;
                            return 0;
                        }
                    }

                    if(vec[i+1][j]!=0 and vec[i][j+1]!=0){
                        if(sum1 > sum2){
                            cout << "No" << endl;
                            return 0;
                        }else{
                            if(vec[i+1][j]>0 and vec[i][j+1]==0){
                                vec[i][j+1] = sum1 - sum2;
                            }else if(vec[i+1][j]==0 and vec[i][j+1]>0){
                                vec[i+1][j] = sum1 - sum2;
                            }
                        }
                    }
                }
                if(vec[i][j]==0 and vec[i+1][j+1]>0 and vec[i][j+1]>0 and vec[i+1][j]>0){
                    vec[i][j] = vec[i+1][j] + vec[i][j+1] - vec[i+1][j+1];
                    if(vec[i][j] < 0){
                        cout <<"No" << endl;
                        return 0;
                    }
                }

            }
        }
        if(vec == beg){
            break;
        }
    }
/*}}}*/
//    for(int i=0;i<RR;i++){
//        cout << vec[i] << endl;
//    }

    cout << "Yes" << endl;
}


Compiler output:
a.cc: In function 'int main()':
a.cc:88:11: error: invalid type argument of unary '*' (have 'll' {aka 'long long int'})
   88 |     if(RR**CC>10000000){
      |           ^~~