Cod sursa(job #989356)

Utilizator meehighStancu Mihai meehigh Data 25 august 2013 15:34:03
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>
#define nmax 15001
FILE *f,*g;
long a[nmax],n,m;
 
long suma(long i)
{
  long j=0;
  while (i>0)
    {
      j+=a[i];
      i-=i&(i^(i-1));
    }
  return j;
}
 
void add(long i,long x)
{
  while (i<=n)
    {
      a[i]+=x;
      i+=i&(i^(i-1));
    }
}
 
int main()
{ 
   long i,x,y,z;
   f=fopen("datorii.in","rt");
   g=fopen("datorii.out","wt");
   fscanf(f,"%ld %ld",&n,&m);
   for (i=1;i<=n;i++)
     {
       fscanf(f,"%ld",&x);
       add(i,x);
     }
   for (i=1;i<=m;i++)
     {
       fscanf(f,"%ld %ld %ld",&x,&y,&z);
       if (x==0)
         {
           add(y,-z);
         }
        else
         {
           fprintf(g,"%ld\n",suma(z)-suma(y-1));
         }
     }

   fclose(f);
   fclose(g);
   return 0;
}