Cod sursa(job #2638922)

Utilizator andrei42Oandrei42O andrei42O Data 30 iulie 2020 15:57:46
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int v[1 << 14], n, m, x, st, dr, code, query(int);
void update(int, int);
int main()
{
	f >> n >> m;
	for (int i = 1; i <= n; i++) {
		f >> x;
		update(i, x);
	}
	for (int i = 1; i <= n; i++)
		cout << v[i] << ' ';
	for (; m; m--)
	{
		f >> code >> st >> dr;
		if (!code)
			update(st, -dr);
		else
			g << query(dr) - query(st - 1) << '\n';
	}
	return 0;
}
void update(int poz, int val)
{
	for (int i = poz; i <= n; i += i&(-i))
		v[i] += val;
}
int query(int poz)
{
	int ret = 0;
	for (; poz; poz -= poz & (-poz))
		ret += v[poz];
	return ret;
}