Cod sursa(job #2876942)

Utilizator DooMeDCristian Alexutan DooMeD Data 23 martie 2022 21:50:47
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <bits/stdc++.h>
#define lsb(x) x & (-x)
using namespace std;
const int nmax = 15000;

int n,m; 
int v[nmax+5], aib[nmax+5];

void update(int pos, int val) {
	v[pos] += val;
	for(int i=pos; i<=n; i+=lsb(i))
		aib[i] += val;
}

int query(int pos) {
	int res = 0;
	for(int i=pos; i>=1; i-=lsb(i))
		res += aib[i];
	return res;
}

int main() {
	ifstream f("datorii.in");
	ofstream g("datorii.out");
	
	f >> n >> m;
	for(int i=1; i<=n; i++) {
		f >> v[i];
		update(i, v[i]);
	}
	for(int i=1; i<=m; i++) {
		int op, a, b; f >> op >> a >> b;
		if(op==0) update(a, -b);
		else g << query(b) - query(a-1) << "\n";
	}
	return 0;
}