Pagini recente » Cod sursa (job #2464064) | Cod sursa (job #2304759) | Cod sursa (job #2215663) | Cod sursa (job #810909) | Cod sursa (job #112898)
Cod sursa(job #112898)
#include <stdio.h>
#define NMax 20000
int n, m;
int aib[NMax];
FILE *f, *g;
void citire();
void insert( int dr );
int sum( int st, int dr );
int main()
{
citire();
return 0 ;
}
int sum( int st, int dr )
{
int s1=0, s2=0, poz;
poz = 0;
while ( dr > 0 )
{
s1 += aib[dr];
while ( (dr & (1 << poz)) == 0 )
poz++;
dr -= (1 << poz) ;
}
poz = 0;
st--;
while ( st > 0 )
{
s2 += aib[st];
while ( (st & (1 << poz)) == 0 )
poz++;
st -= (1 << poz) ;
}
return s1-s2;
}
void insert( int st, int elem )
{
int poz = 0;
while ( st <= n )
{
aib[st] += elem;
while ( (st & (1 << poz)) == 0 )
poz++;
st += (1 << poz) ;
}
}
void citire()
{
int i, aux, cod, aux1, aux2;
f = fopen( "datorii.in", "rt" );
g = fopen( "datorii.out", "wt" );
fscanf ( f, "%d %d", &n, &m );
for (i=1; i<=n; i++)
{
fscanf( f, "%d", &aux );
insert( i, aux );
}
for (i=0; i<m; i++)
{
fscanf( f, "%d %d %d", &cod, &aux1, &aux2 );
if ( cod == 0 )
insert( aux1, -aux2 );
else
fprintf( g, "%d\n", sum( aux1, aux2 ) );
}
}