Cod sursa(job #370400)

Utilizator victor.ionescuIonescu Victor Cristian victor.ionescu Data 1 decembrie 2009 02:50:42
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.53 kb
#include <fstream>
using namespace std;
ifstream fi("datorii.in");
ofstream fo("datorii.out");
int N,M,aib[16010];

inline int bit(int x){
	return (x & (x-1))^x;
}

void add(int poz,int s){
	for (;poz<=N;poz+=bit(poz)) aib[poz]+=s;
}

int query(int poz){
	int rez=0;
	for (;poz;poz-=bit(poz)) rez+=aib[poz];
	return rez;
}

int main(){
	fi>>N>>M;
	int x,y,z;
	for (int i=1;i<=N;++i){
		fi>>x;
		add(i,x);
	}
	for (int i=1;i<=M;++i){
		fi>>x>>y>>z;
		if (x==0) add(y,-z); else fo<<query(z)-query(y-1)<<"\n";
	}
	fi.close();fo.close();
	return 0;
}