Cod sursa(job #711978)

Utilizator andreifirstCioara Andrei Ioan andreifirst Data 12 martie 2012 22:01:53
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
using namespace std;

#define val 16384
//16384

ifstream f("datorii.in"); ofstream g("datorii.out"); 

int v[val*2+5];
long long t;
int i, j, n, m, x, y, c, p;

void arb(int s, int d, int niv){
	int m;
	m=(s+d)/2;
	if (x<=s && y >=d) t+=v[niv];
	else {
		if (x<=m) arb(s, m, 2*niv);
		if (m+1<=y) arb(m+1, d, 2*niv+1);
	}
}

int main (){
	f >> n >> m;
	for (i=1; i<=n; i++){
		f>> x;
		p=val+i-1;
		
		while (p!=0){
			v[p]+=x;
			p=p/2;
		}
	}
	
	for (i=1; i<=m; i++){
		f >> p >> x >> y;
		if (p==0){
			p=val+x-1;
			while (p!=0){
				v[p]-=y;
				p=p/2;
			}
		}
		else {
			t=0;
			arb(1, val, 1);
			g<<t<<"\n";
		}
	}
}