Cod sursa(job #270919)

Utilizator zbarniZajzon Barna zbarni Data 4 martie 2009 18:32:31
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<fstream.h>
#define nx 15005
#define zeros(x) ((x^(x-1))&x)
int a[nx],n;
void add (int x,int what)
 {
  for (int i=x;i<=n;i+=zeros(i))
   a[i]+=what;
 }
int doit (int x)
 {
  int i,r=0;
  for (i=x;i>0;i-=zeros(i))
     r+=a[i];
  return r;
 }
int main()
 {
  ifstream be ("datorii.in");
  ofstream ki ("datorii.out");
  int m,i,o,x,y;
  be>>n>>m;
  for (i=1;i<=n;++i)
   {
    be>>x;
    add(i,x);
   }
  for (i=1;i<=m;++i)
   {
    be>>o;
    if (!o)
     {
      be>>x>>y;
      add(x,-y);
     }
    if (o==1)
     {
      be>>x>>y;
      ki<<doit(y)-doit(x-1)<<'\n';
     }
   }
  be.close();
  ki.close();
  return 0;
 }