Pagini recente » Cod sursa (job #2741569) | Cod sursa (job #279940) | Pawns | ojii | Cod sursa (job #2912984)
#include <bits/stdc++.h>
#define N 15005
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,m;
long long a[N],b[(int)sqrt(N)],lazy[(int)sqrt(N)],lg;
long long S;
int q,l,r,op;
void Update(int l,int r,long long x)
{
for(int i=l;i<=r;)
if(i%lg==1 && i+lg-1<=r) b[(i-1)/lg+1]+=lg*x,lazy[(i-1)/lg+1]+=x,i+=lg;
else b[(i-1)/lg+1]+=x,a[i]+=x,i++;
///for(int i=1;i<=lg+1;i++) cout<<b[i]<<" ";cout<<"\n";
// c[l]+=x;c[r+1]-=x;
}
long long Query(int l,int r)
{
S=0;
for(int i=l;i<=r;)
if(i%lg==1 && i+lg-1<=r) S+=b[(i-1)/lg+1],i+=lg;
else S+=a[i++];
return S;
}
int main()
{
int i,x,y;
bool op;
fin>>n>>m;
for(i=1;i<=n;i++) fin>>a[i];
lg=sqrt(n);
for(i=1;i<=n;i++)
b[(i-1)/lg+1]+=a[i];
while(m--)
{
fin>>op>>x>>y;
if(!op) Update(x,x,-y);
else fout<<Query(x,y)<<"\n";
}
return 0;
}