Pagini recente » Cod sursa (job #206700) | Cod sursa (job #1118922) | Cod sursa (job #391451) | Cod sursa (job #2755939) | Cod sursa (job #1509632)
#include <fstream>
using namespace std;
const int N2MAX= 16384;
ifstream in( "datorii.in" );
ofstream out( "datorii.out" );
int arb[N2MAX*2];
int query( int nod, int lq, int rq, int ln, int rn )
{
int ans1, ans2;
if( ln >= lq && rn <= rq )
{
return arb[nod];
}
if( ln > rq || rn < lq )
{
return 0;
}
ans1= query( nod*2, lq, rq, ln, (rn+ln)/2 );
ans2= query( nod*2+1, lq, rq, (rn+ln)/2+1, rn );
return ans1+ans2;
}
int main( )
{
int N, M, N2= 1;
in >> N >> M;
while( N2<N )
{
N2*=2;
}
for( int i= N2; i<=N2+N-1; ++i )
{
in >> arb[i];
}
for( int i= N2-1; i>=1; --i )
{
arb[i]= arb[i*2]+arb[i*2+1];
}
for( int q= 1; q<=M; ++q )
{
int a, b, c;
in >> a >> b >> c;
if( a==0 )
{
int aux= (N2-1+b)/2;
arb[N2-1+b]-=c;
while( aux>=1 )
{
arb[aux]= arb[aux*2]+arb[aux*2+1];
aux/=2;
}
}
else
{
out << query( 1, b, c, 1, N2 ) << '\n';
}
}
return 0;
}