Cod sursa(job #266861)

Utilizator warangeldinu sorin warangel Data 26 februarie 2009 10:50:03
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<stdio.h>
int v[15010],val;
int n;
long m;
int suma(int t)
{
   int s=v[t];
   while((t-=(t&(t-1))^t))
      s+=v[t];
   return s;
}
void add(int x)
{
   v[x]+=val;
   while((x+=(x&(x-1))^x)<=n)
   v[x]+=val;
}
int main()
{
   freopen("datorii.in","r",stdin);
   freopen("datorii.out","w",stdout);
	scanf("%d %ld",&n,&m);
	int i;
	for(i=1;i<=n;i++){scanf("%d",&val);add(i);}
   int a,b,c;
   for(;m--;)
   {
      scanf("%d %d %d",&a,&b,&c);
   	if(a)
      {
         printf("%ld\n",suma(c)-suma(b-1));
      }
      else
      {
         val=-c;
         add(b);
      }
   }
   fclose(stdin);
   fclose(stdout);
   return 0;
}