Cod sursa(job #2497684)

Utilizator CyborgSquirrelJardan Andrei CyborgSquirrel Data 23 noiembrie 2019 10:09:19
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <iostream>
#include <fstream>

using namespace std;

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

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

int n, m;
int bit[15041];

void addit(int p, int x){
	for(int i = p; i <= n; i += y2k(i)){
		bit[i] += x;
	}
}

int calcit(int p){
	int s = 0;
	for(int i = p; i >= 1; i -= y2k(i)){
		s += bit[i];
	}
	return s;
}

int btwit(int a, int b){
	return calcit(b) - calcit(a-1);
}

int main(){
	fin >> n >> m;
	for(int i = 1; i <= n; ++i){
		int a;fin >> a;
		addit(i, a);
	}
	
	for(int i = 0; i < m; ++i){
		int op, a, b;
		fin >> op >> a >> b;
		if(op == 0){
			addit(a, -b);
		}else{
			fout << btwit(a, b) << "\n";
		}
	}
	return 0;
}