Cod sursa(job #3247101)

Utilizator CosminaneBoac Mihai Cosmin Cosminane Data 5 octombrie 2024 17:11:19
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <iostream>
using namespace std;
int v[15005], n;
void add(int x, int a) {
	int i, poz;
	i = 0;
	poz = x;
	while (poz < n) {
		if (x % 2 == 0) {
			v[poz] += a;
			poz += ( 1 << i );
		}
		x /= 2;
		i++;
	}
}
int sum(int x) {
	int i, poz, s;
	poz = x - 1;
	i = s = 0;
	while (x > 0) {
		if (x % 2 == 1) {
			s += v[poz];
			poz -= ( 1 << i );
		}
		x /= 2;
		i++;
	}
	return s;
}
int main() {
	int m, i, x, tip, a, b;
	ifstream fin( "datorii.in" );
	ofstream fout( "datorii.out" );
	fin >> n >> m;
	for (i = 0; i < n; i++) {
		fin >> x;
		add( i, x );
	}
	/*for (i = 0; i < n; i++) {
		cout << v[i] << ' ';
	}*/
	for (i = 0; i < m; i++) {
		fin >> tip >> a >> b;
		if (tip == 0) {
			add( a - 1, -b );
		}
		else {
			fout << sum( b ) - sum( a - 1 ) << '\n';
		}
	}
	return 0;
}