#include //#include #ifdef LOCAL #define sc cerr #else #define sc if(0)cerr //#pragma optimized("O2") #endif #define qlog(x) {sc<<#x<<" = "<<(x)<<"\n";} #define rep(i,l,r) for(int i=(l);i<=(r);i++) #define irep(i,r,l) for(int i=(r);i>=(l);i--) #define qloga(a,l,r) {sc<<#a<<": "; rep(I,(l),(r)){sc< a; #define ls(u) (a[(u)].ls) #define rs(u) (a[(u)].rs) #define mx(u) (a[(u)].mx) void pushup(int u){ mx(u)=max(mx(ls(u)),mx(rs(u))); } void modify(int p,int x,int &u,int l,int r){ if(!u){ a.emplace_back(0,0,0); u=(int)a.size()-1; } if(l==r){ mx(u)=x; return; } int mid=(l+r)/2; if(p<=mid)modify(p,x,ls(u),l,mid); else modify(p,x,rs(u),mid+1,r); pushup(u); } ll query(int L,int R,int u,int l,int r){ if(!u)return 0; if(L<=l && r<=R){ return mx(u); } int mid=(l+r)/2; ll ans=0; if(L<=mid)ans=max(ans,query(L,R,ls(u),l,mid)); if(midR)return 0; if(R>n)R=n; return query(L,R,root,1,n); } void add(int p,int x){ modify(p,query(p,p)+x); } ll sum(){ ll ans=0; rep(i,1,n)ans+=query(i,i); return ans; } ST(int _n): n(_n){ a.emplace_back(0,0,0); a.reserve(1e7); root=0; } ST(){} }Ls,Rs,Us,Ds; int Q,h,w; void _modify(ST &L, ST &R, ST &U, ST &D,int x,int v){ int n=U.n, m=L.n; int cur=D.query(x,x), opp=U.query(n-x+1,n-x+1); D.add(x,v); int l=cur+1, r=m+1; //sc<<"["<=x || R.query(cur,mid)>=n-x+1; }())r=mid; else l=mid+1; } sc<=x); bool B=(R.query(r,r)>=n-x+1); sc<m){ D.modify(x,0); U.modify(n-x+1,0); sc<<" ????\n"; } } void modify(int x,int y,int v){ if(!x) _modify(Rs,Ls,Ds,Us,h-y+1,v); else if(x==w+1)_modify(Ls,Rs,Us,Ds,y,v); else if(!y) _modify(Us,Ds,Rs,Ls,x,v); else if(y==h+1)_modify(Ds,Us,Ls,Rs,w-x+1,v); } signed main(){ //freopen("snake.in","r",stdin); //freopen("snake.out","w",stdout); ios::sync_with_stdio(0); cin.tie(0); cin>>h>>w>>Q; Ls=ST(w); Rs=ST(w); Us=ST(h); Ds=ST(h); while(Q--){ static int cnt=0; sc<<" ======= "<<++cnt<<" ========\n"; int x,y,v; cin>>x>>y>>v; modify(x,y,v); } ll A=Ls.sum(); ll B=Rs.sum(); ll C=Us.sum(); ll D=Ds.sum(); cout<