Cod sursa(job #2294451)

Utilizator serban24Popovici Serban-Florin serban24 Data 2 decembrie 2018 14:07:52
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <bits/stdc++.h>

using namespace std;

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

int v[15005];
int suma[15005];
int n;

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

	while(x>0){
		sum+=suma[x];
		x-=(x^(x&(x-1)));
	}

	return sum;
}

void update(int x, int val){
	int i;

	for(i=x;i<=n;i+=(i^(i&(i-1))))
		if(suma[i]>=val)
			suma[i]-=val;
}

int main(){
	int aux,m,i,op,x,y;

	fin>>n>>m;

	for(i=1;i<=n;i++){
		fin>>v[i];
		for(int j=i;j<=n;j+=(j^(j&(j-1))))
			suma[j]+=v[i];
	}

	for(i=1;i<=m;i++){
		fin>>op>>x>>y;

		if(!op){
			update(x,y);
		}
		else{
			fout<<query(y)-query(x-1)<<"\n";
		}
	}

    return 0;
}