Cod sursa(job #829482)

Utilizator cristi_berceanuFMI - Cristi Berceanu cristi_berceanu Data 5 decembrie 2012 15:08:43
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<cstdio>
#define NMAX 300000
int poz,val,v[NMAX],i,j,n,m,s,a,b,pos,op,M;

void update(int nod,int st, int dr)
{
if(st==dr)
{
v[nod]=val;
return;
}
m=(st+dr)/2;
if(pos<=m)
	update(nod*2,st,m);
else
	update(nod*2+1,m+1,dr);
v[nod]=v[nod*2+1]+v[nod*2];
}

void query(int nod,int st,int dr)
{
     int mij;
    if ((a<=st) && (dr<=b))
    {
       s=s+v[nod];
       return;}
    mij=(st+dr)/2;
    if (a<=mij)
       query(2*nod,st,mij);
    if (mij<b)
       query(2*nod+1,mij+1,dr);
}
int main()
{

	freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&M);
for(i=1;i<=n;i++)
{
	scanf("%d",&val);
	pos=i;
	update(1,1,n);
}

for(i=1;i<=M;i++)
{
scanf("%d%d%d",&op,&a,&b);
if(!op)
	{
		pos=a;
		val=-b;
		update(1,1,n);
	}
	else
	{
		s=0;
		query(1,1,n);
		printf("%d\n",s);
	}
	

}

return 0;
}