Cod sursa(job #2635377)

Utilizator xCata02Catalin Brita xCata02 Data 14 iulie 2020 12:06:20
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>
using namespace std;

#define endl "\n"
 
 
ifstream fin  ("datorii.in");
ofstream fout("datorii.out");
 
#define cin  fin
#define cout fout
 
 
#define Nmax 15010
 
int n, q;
int a[Nmax];
 
void adauga(int poz, int val) {
	for(int i=poz; i <= n; i += i & (-i)) {
		a[i] += val;
	}
}
 
int calc(int max) {
	int sol = 0;
	for(int i = max; i >= 1; i -= i & (-i)) {
		sol += a[i];
	}
	return sol;
}
 
 
void solve() {
	cin >> n >> q;
	for(int i=1; i <= n; i++) {
		int x; cin >> x;
		adauga(i, x);
	}
	while(q--) {
		int t, x, y; cin >> t >> x >> y;
		if(t == 0) {
			adauga(x, -y);
		} else {
			cout << calc(y) - calc(x - 1) << endl;
		}
	}
}
 
 
int main() {
	ios_base::sync_with_stdio(0);
	cin .tie(0);
	cout.tie(0);
	
	int testCases = 1;
	//cin >> testCases;
	while(testCases--) {
		solve();
	}
}