Pagini recente » Cod sursa (job #1424826) | Cod sursa (job #754901) | Cod sursa (job #3208065) | Cod sursa (job #888838) | Cod sursa (job #2452665)
#include <stdio.h>
#include <stdlib.h>
int aib[15001];
int zeros( int i ) {
return ( i ^ ( i - 1 ) ) & i;
}
void update( int n, int val, int poz ) {
int i;
for ( i = poz; i <= n; i += zeros(i) ) {
aib[i] += val;
}
}
int sum( int poz ) {
int s = 0, i;
for ( i = poz; i > 0; i -= zeros(i) ) {
s += aib[i];
}
return s;
}
int main() {
FILE *fin = fopen( "datorii.in", "r" ), *fout = fopen( "datorii.out", "w" );
int n, i, m, cer, a, b;
fscanf( fin, "%d%d", &n, &m );
for ( i = 1; i <= n; i ++ ) {
fscanf( fin, "%d", &a );
update( n, a, i );
}
for ( i = 0; i < m; i ++ ) {
fscanf( fin, "%d", &cer );
switch ( cer ) {
case 0:
fscanf( fin, "%d%d", &a, &b );
b *= -1;
update( n, b, a );
break;
case 1:
fscanf( fin, "%d%d", &a, &b );
fprintf( fout, "%d ", sum(b) - sum( a - 1 ) );
break;
}
}
fclose( fin );
fclose( fout );
return 0;
}