Pagini recente » Cod sursa (job #1115467) | Cod sursa (job #645618) | Clasament oji-2015-cls11-12 | Cod sursa (job #2576875) | Cod sursa (job #2758751)
#include <bits/stdc++.h>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
const int N=33002;
int n,m,a[N],p,c,x,y;
int suma(int nod, int st, int dr)
{
if(x<=st && dr<=y)
return a[nod];
if(x>dr || st>y)
return 0;
int mi=(st+dr)/2;
return suma(2*nod,st,mi)+suma(2*nod+1,mi+1,dr);
}
int main()
{
f>>n>>m;
p=1;
while(p<n)
p*=2;
for(int i=1;i<=n;i++)
f>>a[p-1+i];
for(int i=p-1;i>=1;i--)
a[i]=a[2*i]+a[2*i+1];
for(;m;m--)
{
f>>c>>x>>y;
if(c==0)
{
x=x+p-1;
a[x]-=y;
x/=2;
while(x>0)
{
a[x]=a[2*x]+a[2*x+1];
x/=2;
}
}
else
g<<suma(1,1,p)<<'\n';
}
return 0;
}