Cod sursa(job #1199734)

Utilizator heracleRadu Muntean heracle Data 20 iunie 2014 14:26:39
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<cstdio>

FILE* in=fopen("datorii.in","r");
FILE* out=fopen("datorii.out","w");

int t,n;
const int Q=15007;
int v[Q];

void add(int wh, int val)
{
	while(wh<=t)
	{
		v[wh]+=val;
		wh+=wh&(-wh);
	}
}
int take(int wh)
{
	int rez=0;
	while(wh)
	{
		rez+=v[wh];
		wh-=wh&(-wh);
	}
	return rez;
}


int main()
{
	fscanf(in,"%d%d",&t,&n);

	int x;

	for(int i=1; i<=t; i++)
	{
		fscanf(in,"%d",&x);
		add(i,x);
	}

	int p,wh;

	for(int i=1; i<=n; i++)
	{
		fscanf(in,"%d%d%d",&p,&wh,&x);
		if(p==0)
			add(wh,-x);
		else
			fprintf(out,"%d\n",take(x)-take(wh-1));
	}

	return 0;
}