Cod sursa(job #671038)

Utilizator thesilverhand13FII Florea Toma Eduard thesilverhand13 Data 30 ianuarie 2012 16:51:49
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
 # 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;
 }