Pagini recente » Cod sursa (job #2692607) | Cod sursa (job #1999960) | Cod sursa (job #3278464) | Cod sursa (job #12674) | Cod sursa (job #2147465)
#include <bits/stdc++.h>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int a[60005],n,m,val,lef,rig;
int b[15005];
void update( int nod, int st, int dr, int pos)
{
if( st == dr )
{
a[nod] = val;
return;
}
int mid = ( st+dr ) /2;
if( pos <=mid ) update( 2*nod,st,mid,pos); else
update( 2*nod+1, mid+1, dr, pos);
a[nod] = a[nod*2] + a[nod*2+1];
}
void qwery( int nod, int st, int dr )
{
if( st >=lef && rig >= dr )
{
val += a[nod];
return;
}
int mid = ( st + dr ) /2;
if( lef <= mid ) qwery(2*nod, st, mid );
if( rig > mid ) qwery( 2*nod+1, mid+1, dr);
}
int main()
{
in >> n >> m;
int x;
for(int i=1; i<=n; i++)
{
in >> x;
b[i] = x;
val = x;
update( 1,1,n,i);
}
int qw, y;
for(int i=1; i<=m; i++)
{
in >> qw;
if( qw == 0)
{
in >> x >> y;
val = b[x]-y;
b[x]-=y;
update(1,1,n,x);
}
else
{
in >> x >> y;
lef = x; rig = y;
val =0;
qwery(1,1,n);
out << val << '\n';
}
}
return 0;
}