rt,直接从上帝造提的7分钟复制做来的
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1005;
int n,m;
int a[N][N],ai[N][N],aj[N][N],aij[N][N];
int lowbit(int x){return x&-x;}
void add(int x,int y,int d)
{
for(int i=x;i<=n;i+=lowbit(i))
for(int j=y;j<=m;j+=lowbit(j))
{
a[i][j]+=d;
ai[i][j]+=d*x;
aj[i][j]+=d*y;
aij[i][j]+=d*x*y;
}
}
int sum(int x,int y)
{
int ret=0;
for(int i=x;i;i-=lowbit(i))
for(int j=y;j;j-=lowbit(j))
ret+=a[i][j]*(x+1)*(y+1)-ai[i][j]*(y+1)-aj[i][j]*(x+1)+aij[i][j];
return ret;
}
void update(int xl,int yl,int xr,int yr,int d)
{
add(xl,yl,d);
add(xr+1,yr+1,d);
add(xl,yr+1,-d);
add(xr+1,yl,-d);
}
int query(int xl,int yl,int xr,int yr)
{
return sum(xr,yr)-sum(xl-1,yr)-sum(xr,yl-1)+sum(xl-1,yl-1);
}
signed main()
{
cin>>n>>m;
while(m--)
{
int op,xl,yl,xr,yr,k;
cin>>op>>xl>>yl>>xr>>yr;
if(op==1)
cout<<query(xl,yl,xr,yr)<<'\n';
else
cin>>k,update(xl,yl,xr,yr,k);
}
}