Cod sursa(job #189801)

Utilizator me_andyAvramescu Andrei me_andy Data 18 mai 2008 13:45:59
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<fstream.h>

 ifstream f("datorii.in");
 ofstream g("datorii.out");

 long a[16001],n,poz,x,y,z,k,i;
void adaug(int x,int y)
{
 int poz=0,x1;
 while(x<=n)
 {
  a[x]+=y;
   while((x&(1<<poz))==0)
      poz++;
  x+=(1<<poz);
  poz++;
 }
}




int suma(int k)
{
 int k1,s=0,poz=0;;
 while(k>0)
 {
  s+=a[k];
   while((k&(1<<poz))==0)
      poz++;
  k-=(1<<poz);
  poz++;

 }
 return s;
}


int main()
{
 f>>n>>k;
 for(i=1;i<=n;i++)
 {
  f>>x;
  adaug(i,x);
 }
 for(i=1;i<=k;i++)
 {
  f>>x>>y>>z;
  if(x==1)
   g<<(suma(z)-suma(y-1))<<"\n";
  else
  {z=-z; adaug(y,z);}
 }
 return 0;
}