一道三维偏序模板,用二维前缀和容斥一下,
第一维是时间,第二维是x,第三维是y。

#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cmath>
#include<cstdlib>
#define gc getchar()
#define ll long long
using namespace std;
const int N=2e5+10;
template<class o>
inline void qr(o &x)
{
    char c=gc;int f=1;x=0;
    while(c<'0'||c>'9'){if(c=='-')f=-1;c=gc;}
    while(c>='0'&&c<='9'){x=x*10+(c^48);c=gc;}
    x*=f;
}
void qw(ll x)
{
    if(x<0)x=-x,putchar('-');
    if(x/10)qw(x/10);
    putchar(x%10+48);
}
struct node{int op,x,y,val;bool operator <(const node a)const{return x==a.x?op<a.op:x<a.x;}}q[N],a[N];
int c[20000005];int mx;
inline void add(int x,ll k){for(;x<=mx;x+=x&-x)c[x]+=k;}
inline ll ask(int x){ll ans=0;for(;x;x-=x&-x)ans+=c[x];return ans;}
void cdqdiv(int l,int r)
{
    int mid=l+r>>1;
    if(l<mid)cdqdiv(l,mid);
    if(r>mid+1)cdqdiv(mid+1,r);
    int len=0;
    for(int i=l;i<=r;i++)
        if((i<=mid&&q[i].op==1)||(i>mid&&q[i].op==2))a[++len]=q[i],a[len].op=i;
    sort(a+1,a+len+1);
    for(int i=1;i<=len;i++)
        if(q[a[i].op].op==1)
            add(a[i].y,a[i].val);
        else q[a[i].op].val+=ask(a[i].y);
    for(int i=1;i<=len;i++)
        if(q[a[i].op].op==1)
            add(a[i].y,-a[i].val);
}
int main()
{
    int n,op;qr(op),qr(n);int cnt=0;mx=0;
    while(233)
    {
        qr(op);if(op==3)break; 
        if(op==1)
            q[++cnt].op=1,qr(q[cnt].x),qr(q[cnt].y),qr(q[cnt].val),++q[cnt].x,++q[cnt].y,mx=max(q[cnt].y,mx);
        else
        {
            int x1,x2,y1,y2;qr(x1),qr(y1),qr(x2),qr(y2);++x2,++y2;//(x2,y2)-(x2,y1-1)-(x1-1,y2)+(x1-1,y1-1)平移一个单位。
            q[++cnt].op=2;q[cnt].x=x2,q[cnt].y=y2;
            q[++cnt].op=2;q[cnt].x=x1,q[cnt].y=y1;
            q[++cnt].op=2;q[cnt].x=x2,q[cnt].y=y1;
            q[++cnt].op=2;q[cnt].x=x1,q[cnt].y=y2;
            mx=max(y2,mx);
        }
    }
    cdqdiv(1,cnt);
    for(int i=1;i<=cnt;i++)
        if(q[i].op==2)
        {
            ll ans=0;
            ans=q[i].val+q[i+1].val-q[i+2].val-q[i+3].val;
            qw(ans);puts("");i+=3;
        }
    return 0;
}