样例没问题,但是交上去之后9个超时
求大佬调一下
//2023/6/25
//别着急,先通读一遍题目
//别忘了开long long
//写完先看一遍怎么降复杂度
//要么开全局变量要么给定初值
//想想看,有什么情况需要特判
//看看数组开的够不够大
//std::ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN=5e3+10;
int num,ans;
int ta[MAXN][MAXN];
int n,m;
int lowbit(int x){return x&(-x);}
int read()
{
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-'){w=-1;}ch=getchar();}
while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
return s*w;
}
void update(int idx,int ydx,int val)
{
for (;idx<=n;idx+=lowbit(idx)){
for (int udx=ydx;udx<=m;udx+=lowbit(udx)){
ta[idx][udx]+=val;
}
}
}
int qzh(int didx,int done)
{
int sum=0;
for (;didx>0;didx-=lowbit(didx)){
for (int dos=done;dos>0;dos-=lowbit(dos)){
sum+=ta[didx][dos];
}
}
return sum;
}
int qjh(int x1,int y1,int x2,int y2)
{
return qzh(x2,y2)-qzh(x1-1,x2)-qzh(x2,y1-1)+qzh(x1-1,y1-1);
}
signed main()
{
n=read();m=read();
int opt;
while(cin>>opt){
if(opt==1){
int x,y,k;
x=read();y=read();k=read();
update(x,y,k);
}
else{
int a,b,c,d;
a=read();b=read();c=read();d=read();
cout<<qjh(a,b,c,d)<<'\n';
}
}
return 0;
}