Cod sursa(job #654456)

Utilizator VisuianMihaiMihai Visuian VisuianMihai Data 30 decembrie 2011 15:34:45
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<fstream>
#define zeros(x) (x&(-x))
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int a[100010];
int sum ( int nr )
{
	int s = 0, i;
	for ( i = nr; i >= 1; i -= zeros(i) )
		s += a[i];
	return s;
}
void achita ( int i, int cant, int n )
{
	for ( int j = i; j <= n; j += zeros(j) )
		a[j] += cant;
}
int main()
{
	int n, m, i, t, v, x;
	bool val;
	fin >> n >> m;
	for ( i = 1; i <= n; i++ )
	{
		fin >> x;
		achita ( i,x,n );
	}
	for ( i = 1; i <= m; i++ )
	{
		fin >> val >> t >> v;
		if ( val )
		{
			fout << sum ( v ) - sum ( t-1 ) << '\n';
		}
		if ( !val )
		{
			achita ( t,-v,m );
		}
	}
	fin.close();
	fout.close();
	return 0;
}