Cod sursa(job #2556182)

Utilizator 1chiriacOctavian Neculau 1chiriac Data 24 februarie 2020 18:57:02
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <bits/stdc++.h>

using namespace std;
int n,m,aib[15005],suma;
int lsb (int nr) {
	return (nr & (-nr));
}
void updatee (int poz, int nr) {
	while(poz<=n) {
		aib[poz]+=nr;
		poz+=lsb(poz);
	}
}
int querrys (int poz) {
	suma=0;
	while(poz>0) {
		suma+=aib[poz];
		poz-=lsb(poz);
	}
	return suma;
}
int main () {
	int nr,nr1,nr2;
	freopen("datorii.in","r",stdin);
	freopen("datorii.out","w",stdout);
	scanf("%d%d", &n, &m);++m;
	for(int i=1;i<=n;++i)
		scanf("%d", &nr),updatee(i,nr);
	while(--m) {
		scanf("%d%d%d", &nr, &nr1, &nr2);
		if(nr==0)
			updatee(nr1,-nr2);
		else
			printf("%d\n", querrys(nr2)-querrys(nr1-1));
	}
	return 0;
}