Pagini recente » Cod sursa (job #1528414) | Cod sursa (job #2341851) | Cod sursa (job #1350666) | Cod sursa (job #2764876) | Cod sursa (job #1680641)
#include <stdio.h>
#define NMAX 15001
int aib [ NMAX ] ;
int n ;
int lsb (int x ) {
return ( (x ^ (x-1) ) & x ) ;
}
void add (int poz, int val ) {
int i ;
for (i = poz ; i <= n ; i += lsb (i) ) {
aib[i] += val ;
}
}
void scad(int poz, int val ) {
int i ;
for (i = poz ; i <= n ; i += lsb (i) ) {
aib[i] -= val ;
}
}
int sum (int poz ) {
int i, sol ;
sol = 0 ;
for (i = poz ; i > 0 ; i -= lsb (i) )
sol += aib[i] ;
return sol ;
}
int main()
{
FILE *fin, *fout ;
fin = fopen ("datorii.in", "r" ) ;
fout = fopen ("datorii.out", "w" ) ;
int m, i, tip, st, dr, val, poz, elem ;
fscanf (fin, "%d%d", &n, &m ) ;
for (i = 1 ; i <= n ; i++ ) {
fscanf (fin, "%d", &elem ) ;
add (i, elem ) ;
}
for (i = 0 ; i < m ; i++ ) {
fscanf (fin, "%d", &tip ) ;
if (tip == 0 ) {
fscanf (fin, "%d%d", &poz, &val ) ;
scad (poz, val ) ;
}
else {
fscanf (fin, "%d%d", &st, &dr ) ;
fprintf (fout, "%d\n", sum (dr) - sum (st-1) ) ;
}
}
return 0;
}