Cod sursa(job #847623)

Utilizator dragangabrielDragan Andrei Gabriel dragangabriel Data 4 ianuarie 2013 12:15:17
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,j,k,m,v[15005],s[100005],a,b;
int slb(int x)
{ return (x & (x - 1)) ^ x;}

void update(int x,int y)
{
	for (;x<=n;x+=slb(x))
		s[x]+=y;
}
int query(int x)
{
	int sum=0;
	for (;x>=1;x-=slb(x))
		sum+=s[x];
	return sum;
}

int main()
{
	int i;
	freopen("datorii.in","r",stdin);
	freopen("datorii.out","w",stdout);
	scanf("%d %d",&n,&m);
	for (i=1;i<=n;i++) scanf("%d",&v[i]),update(i,v[i]);
	for (i=1;i<=m;i++)
	{
		scanf("%d %d %d",&a,&b,&k);
		if (a==0) update(b,-k),v[b]-=k;
		if (a==1) printf("%d\n",query(k)-query(b-1));
	}
	return 0;
}