Pagini recente » Cod sursa (job #2600313) | Cod sursa (job #239128) | Cod sursa (job #2138741) | Cod sursa (job #2858689) | Cod sursa (job #2400422)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
const int N=15009;
int n,q;
int a[N],aint[2*N];
void build()
{
for(int i=1;i<=n;i++)
aint[n+i-1]=a[i];
for(int i=n-1;i>=1;i--)
aint[i]=aint[i<<1]+aint[(i<<1)|1];
}
void update(int a,int b)
{
for(aint[a+=n-1]-=b;a>=1;a>>=1)
aint[a>>1]=aint[a]+aint[a^1];
}
int query(int st,int dr)
{
int ans=0;
for(st+=n-1,dr+=n;st<dr;st>>=1,dr>>=1)
{
if(st&1)
ans+=aint[st++];
if(dr&1)
ans+=aint[--dr];
}
return ans;
}
int main()
{
fin.sync_with_stdio(false);
fin>>n>>q;
for(int i=1;i<=n;i++)
fin>>a[i];
build();
while(q)
{
int caz,a,b;
q--;
fin>>caz>>a>>b;
if(caz==0)
update(a,b);
else
fout<<query(a,b)<<'\n';
}
return 0;
}