萌新90pts求助
查看原帖
萌新90pts求助
116640
Eaoci楼主2021/9/23 07:02
#include<iostream>
#include<cstdio>
#define int long long
using namespace std;
int n,m,tr[100010][2],q,fl[100010][2];
int read(){
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}
int lob(int x){return x&(-x);}
int upd(int x,int y,int c0,int c1){
	for(int i=x;i<=n;i+=lob(i))tr[i][0]+=c0;
	for(int i=y;i<=m;i+=lob(i))tr[i][1]+=c1;
}
int qry(int p,int f){
	int ans=0;
	for(int i=p;i>=1;i-=lob(i))ans+=tr[i][f];
	return ans;
}
signed main(){
	n=read(),m=read(),q=read();
	for(int i=1;i<=n;i++)fl[i][0]=1,fl[i][1]=1;
	while(q--){
		int op=read();
		if(op==1){
			int x=read(),y=read();
			upd(x,y,fl[x][0],fl[y][1]);
			fl[x][0]=-fl[x][0],fl[y][1]=-fl[y][1];
		}
		if(op==2){
			int x1=read(),y1_=read(),x2=read(),y2=read();
			int x=qry(x2,0)-qry(x1-1,0);
			int y=qry(y2,1)-qry(y1_-1,1);
			int ans=x*(y2-y1_+1ll)+y*(x2-x1+1ll)-2ll*x*y;
			cout<<ans<<"\n";
		}
	}
	return 0;
}
2021/9/23 07:02
加载中...