RT
不知道为什么就超时了,但还是对了一个点
原题目
请各位大佬帮忙看看
复制代码到粘帖板
#include <iostream>
#define ll long long
using namespace std;
ll c[5005][5005],n,m,aa,bb,cc,dd;
ll lowbit(ll x){
return x&-x;
}
void update(ll x,ll y,ll k){
for(ll i=x;i<=n;i+=lowbit(i)){
for(ll j=y;j<=m;j+=lowbit(j)){
c[i][j]+=k;
}
}
return;
}
ll ans;
ll sum(ll x,ll y){
ans=0;
for(ll i=x;i;i-=lowbit(i)){
for(ll j=y;j;j-=lowbit(j)){
ans+=c[i][j];
}
}
return ans;
}
int tmp;
int main(){
cin>>n>>m;
while(cin>>tmp){
cin>>aa>>bb>>cc;
if(tmp==1){
update(aa,bb,cc);
}
else{
cin>>dd;
cout<<sum(cc,dd)-sum(aa-1,bb-1)+sum(aa,bb-1)+sum(aa-1,bb);
}
}
return 0;
}