Pagini recente » Cod sursa (job #174993) | Cod sursa (job #115356) | Cod sursa (job #2111231) | Cod sursa (job #1589483) | Cod sursa (job #2384077)
#include <bits/stdc++.h>
#define DIM 15010
using namespace std;
ifstream f ("datorii.in") ;
ofstream g ("datorii.out") ;
int arb[4*DIM + 20] , v[DIM] ;
int N , M , x;
int poz , val;
long long Sum;
int cer , a , b;
void Update (int nod , int st , int dr)
{
if (st == dr)
{
arb[nod] = val;
return ;
}
int mij = (st + dr) / 2;
if (poz <= mij) Update(2*nod , st , mij) ;
else
Update(2*nod+1,mij+1,dr);
arb[nod] = arb[2*nod] + arb[2*nod+1] ;
}
void Query(int nod ,int st , int dr , int a, int b)
{
if (a <= st && dr <= b)
{
Sum += arb[nod] ;
return ;
}
int mij = ( st + dr ) / 2;
if (a <= mij) Query(2*nod , st , mij , a , b) ;
if (b > mij) Query(2*nod+1, mij+1 , dr , a , b) ;
}
int main()
{
f >> N >> M ;
for (int i = 1 ; i <= N ; ++i)
{
f >> v[i] ;
poz = i ;
val = v[i];
Update(1,1,N) ;
}
// for (int i = 1 ; i <= 2 * N - 1 ; ++i)
// g << arb[i] << ' ';
for (int i = 1 ; i <= M ; ++i)
{
f >> cer >> a >> b;
if (cer == 0)
{
v[a] -= b;
val = v[a] ;
poz = a;
Update(1,1,N) ;
}
else
{
Sum = 0 ;
Query(1,1,N,a,b);
g << Sum << '\n' ;
}
}
return 0 ;
}