Cod sursa(job #3364048)

Utilizator MihaiDraghiciMIHAI DRAGHICI MihaiDraghici Data 28 august 2026 15:27:35
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <vector>
#include <fstream>

#define ll long long

using namespace std;

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

vector<ll> aib;
vector<int> v;
int n, q;

void update(int i, int val) {

	for (; i <= n; i+=(i & (-i))) {
		aib[i] += val;
	}

}

ll take(int i) {

	ll sum = 0;
	for (; i > 0; i-=(i & (-i))) {
		sum += aib[i];
	}

	return sum;

}


int main() {

	fin >> n >> q;

	aib.resize(n + 2);
	v.resize(n + 2);

	for (int i = 1; i <= n; i++) {

		fin >> v[i];
		update(i, v[i]);

	}

	int tip;
	int t, x;
	while (q--) {

		fin >> tip >> t >> x;

		if (tip == 0) {

			update(t, -x);
			v[t] -= x;

		} else {

			fout << take(x) - take(t - 1) << '\n';

		}

	}

	return 0;
}