WA 在第八个点,在 38354 行的地方错了,不知道为什么。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,m,_,a[N],b[N],c[2][N];
void add(int p,int x,int z){for(;x<=n;x+=x&-x)c[p][x]+=z;}
int ask(int p,int x){int ans=0;for(;x;x-=x&-x)ans+=c[p][x];return ans;}
int main(){
scanf("%d%d%d",&n,&m,&_);
while(_--){
int T,x,y,xx,yy;
scanf("%d",&T);
if(T==1){
scanf("%d%d",&x,&y);
a[x]^=1;
if(a[x])add(0,x,1);
else add(0,x,-1);
b[y]^=1;
if(b[y])add(1,y,1);
else add(1,y,-1);
}
else{
scanf("%d%d%d%d",&x,&y,&xx,&yy);
int sx1=ask(0,xx)-ask(0,x-1),sx0=(xx-x+1)-sx1;
int sy1=ask(1,yy)-ask(1,y-1),sy0=(yy-y+1)-sy1;
long long ans=1ll*sx1*sy0+1ll*sx0*sy1;
printf("%lld\n",ans);
}
}
}