Cod sursa(job #1739256)

Utilizator pas.andreiPopovici Andrei-Sorin pas.andrei Data 9 august 2016 02:42:58
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <cstdio>
#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#include <set>
#define pb push_back
#define NMAX 20005
#define INF 0x3f3f3f3f

using namespace std;

ifstream fin("datorii.in");
ofstream fout("datorii.out");

int aib[NMAX],n;

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

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

int query(int pos) {
	int sum=0;

	while(pos>0) {
		sum+=aib[pos];
		pos-=lsb(pos);
	}

	return sum;
}

int main() {
	int i,j,m,t,x,y;

	fin>>n>>m;
	for(i=1;i<=n;++i) {
		fin>>x;
		update(i,x);
	}
	for(i=0;i<m;++i) {
		fin>>t>>x>>y;

		if(t==0) update(x,-y);
		else fout<<query(y)-query(x-1)<<'\n';
	}

	return 0;
}