# AC code:
```
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <cctype>
using namespace std;
inline int read()
{
int x=0,f=1;char ch=getchar();
while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}
while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int n,m,q;
struct segment_tree
{
struct treenode
{
int l,r;
long long val;
}t[100050<<2];
inline void build(int id,int l,int r)
{
t[id].l=l;
t[id].r=r;
if (l==r)
return;
int mid=(l+r)>>1;
build(id<<1,l,mid);
build(id<<1|1,mid+1,r);
}
inline void update(int id,int pos)
{
if (t[id].l==t[id].r)
{
t[id].val^=1;
return;
}
int mid=(t[id].l+t[id].r)>>1;
if (pos<=mid)
update(id<<1,pos);
else
update(id<<1|1,pos);
t[id].val=t[id<<1].val+t[id<<1|1].val;
}
inline long long query(int id,int l,int r)
{
if (l==t[id].l && r==t[id].r)
return t[id].val;
int mid=(t[id].l+t[id].r)>>1;
if (r<=mid)
return query(id<<1,l,r);
else if (l>mid)
return query(id<<1|1,l,r);
else return query(id<<1,l,mid)+query(id<<1|1,mid+1,r);
}
}t1,t2;
int main()
{
n=read(),m=read(),q=read();
t1.build(1,1,n);
t2.build(1,1,m);
while (q--)
{
int c=read(),x=read(),y=read();
if (c==1)
{
t1.update(1,x);
t2.update(1,y);
}
else
{
#define x1 Syameimaru_Aya
#define y1 Himekaidou_Hatate
int x1=read(),y1=read();
long long res1=t1.query(1,x,x1);
long long res2=t2.query(1,y,y1);
printf("%lld\n",res1*(y1-y+1-res2)+res2*(x1-x+1-res1));
}
}
return 0;
}
```
by zvzvzgdfdw @ 2023-08-15 15:57:30
@[XSC2021_HZY](/user/324226)
by zvzvzgdfdw @ 2023-08-15 15:58:10
这不是cz的题解吗(...
by X2H_tato @ 2023-08-15 15:59:59
6,现在调题都直接粘别人题解了
by chancelong @ 2023-08-15 16:55:56