萌新90pts求助
查看原帖
萌新90pts求助
98490
houzhiyuan楼主2021/11/13 18:21

WA 在第八个点,在 3835438354 行的地方错了,不知道为什么。

#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);
		}
	}
} 
2021/11/13 18:21
加载中...