Cod sursa(job #191852)

Utilizator Omega91Nicodei Eduard Omega91 Data 29 mai 2008 10:23:32
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
	int aib[15001] = {}, n, m, x, y, z, s1, s2, k, i;
	ifstream f1("datorii.in");
	ofstream f2("datorii.out");
	f1 >> n >> m;
	for (i = 1; i <= n; ++i) {
		f1 >> x;
		k = i;
		while (k <= n) {
			aib[k] += x;
			k += (~k + 1) & k;
		}
	}

	for (i = 1; i <= m; ++i) {
		f1 >> x >> y >> z;
		if (x) {	//suma
			k = y - 1;
			s1 = s2 = 0;
			while (k > 0) {
				s1 += aib[k];
				k = ((~k + 1) & k) ^ k;
			}
			k = z;
			while (k > 0) {
				s2 += aib[k];
				k = ((~k + 1) & k) ^ k;
			}
			f2 << s2 - s1 << endl;
		}
		else {		//achitare
			k = y;
			while (k <= n) {
				aib[k] -= z;
				k += (~k + 1) & k;
			}
		}
	}

	f1.close();
	f2.close();
	return 0;
}