Pagini recente » Cod sursa (job #2147586) | Cod sursa (job #2380450) | Cod sursa (job #57456) | Cod sursa (job #2999630) | Cod sursa (job #2284577)
#include <bits/stdc++.h>
#define indice(j) (j&(-j))
using namespace std ;
ifstream f("datorii.in");
ofstream g ("datorii.out");
int N , M , AIB[15010] , X , cerinta , B , C ;
void update (int i , int x) // a[i] += x
{
int j ;
for (j = i ; j <= N ; j += indice(j))
AIB[j] += x;
}
int querry (int i) // suma de la '1' la 'i'
{
int j , s = 0 ;
for (j = i ; j >= 1 ; j -= indice(j))
s += AIB[j];
return s;
}
int main()
{
f >> N >> M ;
for (int i = 1 ; i <= N ; i ++ )
{
f >> X ;
update(i,X) ;
}
for (int i = 1 ; i <= M ; i ++)
{
f >> cerinta >> B >> C;
if (cerinta == 0) {update(B , -C);}
else {g << querry(C) - querry(B-1) << '\n'; }
}
return 0 ;
}