Pagini recente » Cod sursa (job #818461) | Cod sursa (job #593301) | Cod sursa (job #2828440) | Cod sursa (job #699061) | Cod sursa (job #671038)
Cod sursa(job #671038)
# include <fstream>
# define dim 15005
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int arb[ dim ];
int n, m;
inline int zeros( int x )
{
return x & -x;
}
inline void insert( int x, int poz )
{
int i;
for ( i = poz ; i <= n ; i = i + zeros( i ) )
arb[ i ] = arb[ i ] + x;
}
inline void scade( int poz, int x )
{
int i;
for ( i = poz ; i <= n ; i = i + zeros( i ) )
arb[ i ] = arb[ i ] - x;
}
inline void suma( int x, int y )
{
int i, suma_a = 0, suma_b = 0;
for ( i = y ; i >= 1 ; i = i - zeros( i ) )
suma_a = suma_a + arb[ i ];
for ( i = x - 1 ; i >= 1 ; i = i - zeros( i ) )
suma_b = suma_b + arb[ i ];
g << suma_a - suma_b << "\n";
}
inline void citire()
{
int i, x, y, var;
f >> n >> m;
for ( i = 1 ; i <= n ; i++ )
{
f >> x;
insert( x, i );
}
for ( i = 1 ; i <= m ; i++ )
{
f >> var;
f >> x >> y;
if ( var == 1 )
{
suma( x, y );
}
else
if ( var == 0 )
{
scade( x, y );
}
}
}
void afiseaza()
{
int i;
for ( i = 1 ; i <= n ; i++ )
g << arb[ i ] << " ";
}
int main()
{
citire();
//afiseaza();
return 0;
}