CF869 E. The Untended Antiquity

来源:互联网 发布:消息队列java 编辑:程序博客网 时间:2024/05/20 02:27

orz:ozy
code:

#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<map>#include<algorithm>#define LL long longusing namespace std;const LL mod=10037;LL tr[2510][2510];map<pair<pair<int,int>,pair<int,int> >,LL > g;LL n,m,p;LL lowbit(LL x){return x&(-x);}void change(LL x,LL y,LL k){    for(LL i=x;i<=n;i+=lowbit(i))        for(LL j=y;j<=m;j+=lowbit(j))            tr[i][j]+=k;}LL get(LL x,LL y){    LL ans=0;    for(LL i=x;i>=1;i-=lowbit(i))        for(LL j=y;j>=1;j-=lowbit(j))            ans+=tr[i][j];    return ans;}int main(){    memset(tr,0,sizeof(tr));    scanf("%lld%lld%lld",&n,&m,&p);    LL s=1;    for (LL u=1;u<=p;u++)    {        LL op,x1,y1,x2,y2;        scanf("%lld %lld %lld %lld %lld",&op,&x1,&y1,&x2,&y2);        if (op==1)        {            s=s*mod;            g[make_pair(make_pair(x1,y1),make_pair(x2,y2))]=s;            change(x1,y1,s);            change(x1,y2+1,-s);            change(x2+1,y1,-s);            change(x2+1,y2+1,s);        }        if (op==2)        {            LL ooo=g[make_pair(make_pair(x1,y1),make_pair(x2,y2))];            change(x1,y1,-ooo);            change(x1,y2+1,ooo);            change(x2+1,y1,ooo);            change(x2+1,y2+1,-ooo);        }        if (op==3)        {            LL aa=get(x1,y1),bb=get(x2,y2);            if (aa==bb) printf("Yes\n");            else printf("No\n");        }    }    return 0;}
阅读全文
0 0
原创粉丝点击