Cod sursa(job #2982628)

Utilizator CosminChCosmin Chiron CosminCh Data 20 februarie 2023 16:31:40
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
using namespace std;

ifstream in("datorii.in");
ofstream out("datorii.out");

int n, q, a[100010];

void cit(int p, int val)
{
	for (int i = p; i <= n; i += i & (-i))
		a[i] += val;
}

void upd(int p, int val)
{
	for (int i = p; i <= n; i += i & (-i))
		a[i] -= val;
}

int sum(int poz)
{
	int val = 0;
	for (int i = poz; i > 0; i -= i & (-i))
		val += a[i];
	return val;
}

int main()
{
	in >> n >> q;
	for (int i = 1; i <= n; i++)
	{
		int x;
		in >> x;
		cit(i,x);
	}
	for (int i = 1; i <= q; i++)
	{
		int tip;
		in >> tip;

		if (tip == 0)
		{
			int poz,val;
			in >> poz >> val;
			upd(poz, val);
		}

		if (tip == 1)
		{
			int st,dr;
			in >> st>>dr;
			out<<sum(dr)-sum(st-1)<<'\n';
		}
	}
	return 0;
}