Cod sursa(job #2635356)

Utilizator xCata02Catalin Brita xCata02 Data 14 iulie 2020 11:23:21
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;


ifstream fin  ("datorii.in");
ofstream fout("datorii.out");
 
#define cin  fin
#define cout fout

#define int long long

 
#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;
		}
	}
}

#define int int 
 
 
int main() {
	ios_base::sync_with_stdio(0);
	cin .tie(0);
	cout.tie(0);
	
	int testCases = 1;
	//cin >> testCases;
	while(testCases--) {
		solve();
	}
}