35分欸,我太弱了/kk
#include<bits/stdc++.h>
using namespace std;
long long e[100010],n,m,a,b,c,p;
int lowbit(int k)
{
return k&(-k);
}
void adde(int pos,int x)
{
for(int i=pos;i<=n;i+=lowbit(i))e[i]+=x;
}
int rhodes(int x)
{
int bt=0;
for(int i=x;i>0;i-=lowbit(i))bt+=e[i];
return bt;
}
int fs(int x)
{
int hb=0;
for(int i=1;i<=x;i++)hb+=rhodes(i);
return hb;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a;
adde(i,a);
adde(i+1,-a);
}
for(int i=1;i<=m;i++)
{
cin>>p;
if(p==1)
{
cin>>a>>b>>c;
adde(a,c);
adde(b+1,-c);
}
if(p==2)
{
cin>>a;
adde(1,a);
adde(2,-a);
}
if(p==3)
{
cin>>a;
adde(1,-a);
adde(2,a);
}
if(p==4)
{
cin>>a>>b;
cout<<fs(b)-fs(a-1)<<endl;
}
if(p==5)cout<<rhodes(1)<<endl;
}
return 0;
}
违规自删