Cod sursa(job #2374958)

Utilizator viperinulViPERiN viperinul Data 7 martie 2019 21:27:54
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>

long m,n,c[15000];

void pune(int i, int aux){
	while (i<=n){
		c[i]+=aux;
		i+=(i^(i-1)&i);
	}
}

void citire(){
	int aux;
	scanf("%ld%ld",&n,&m);
	for (int i=1; i<=n; i++){
		scanf("%d",&aux);
		pune(i,aux);
	}

}


int interogare(int x){
	long s;
    s=0;
	while (x>0){
		s+=c[x];
		x-=(x^(x-1)&x);
	}
	return s;
}

void calc(){
	int p,x,y;
	long w;
	for (int i=1; i<=m; i++){
		scanf("%d%d%d",&p,&x,&y);
		if (p==1) {
            w=interogare(y)-interogare(x-1);
			printf("%ld\n",w);
		}


		else
			pune(x,-y);
	}
}

int main(){
	freopen("datorii.in","r",stdin);
	freopen("datorii.out","w",stdout);
	citire();
	calc();
	fclose(stdin);
	fclose(stdout);
	return 0;
}