|
#include <iostream>
using namespace std;
const int maxn=1001;
int c[maxn][maxn];
int T,n,m;
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif) int lowBit(int i) {return i&(-i);}
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
void add(int i,int j,int val)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif) {
while(i>0)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
int temp=j;
while(temp>0)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
c[i][temp]+=val;
temp-=lowBit(temp);
}
i-=lowBit(i);
}
}
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
int sum(int i,int j)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif) {
int s=0;
while(i<=n)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
int temp=j;
while(temp<=n)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
s+=c[i][temp];
temp+=lowBit(temp);
}
i+=lowBit(i);
}
return s%2;
}
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
int main()
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif) {
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
scanf("%d",&T);
while(T--)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
memset(c,0,sizeof(c));
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
char s;
scanf("%s",&s);
if(s=='C')
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
int x1,y1,x2,y2;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
add(x2,y2,1);
add(x1-1,y2,-1);
add(x2,y1-1,-1);
add(x1-1,y1-1,1);
}
if(s=='Q')
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
int x,y;
scanf("%d%d",&x,&y);
printf("%d\n",sum(x,y));
}
}
printf("\n");
}
return 0;
}
|