Cod sursa(job #204100)

Utilizator MisterXGrigore MisterX Data 21 august 2008 19:58:27
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 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;   
}  
#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;
}