Cod sursa(job #540328)

Utilizator alex@ndraAlexandra alex@ndra Data 23 februarie 2011 21:30:03
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
//DATORII
#include<fstream>
using namespace std;
#define zeros(x) ( (x ^ (x - 1)) & x )

 int n, m, a[15001], cod, i, val, ind,j, st, dr, s1, s2,x;
 
void modificare(int poz,int val)
{ 
     int j;

     for(j=poz;j<=n;j+=zeros(j))
                a[j]+=val;
}

int main()
{
   
     ifstream f("datorii.in");
        f>>n>>m;
        
     for(i=1;i<=n;i++)
        {
          f>>x;
          modificare(i,x);
          }
     
     ofstream g("datorii.out");
       
     for(i=1;i<=m;i++)
       {
          f>>cod;
          
          if(cod==0)
           {
             f>>ind>>val;
             modificare(ind, val);             
             
           }
          else
            {
              f>>st>>dr;
              
              s1=0;
              for(j=dr;j>0;j-=zeros(j))
                 s1+=a[j];
                 
              s2=0;
              for(j=st-1;j>0;j-=zeros(j))
                  s2+=a[j];
                  
              g<<s1-s2<<"\n";
            }
       } 
       
     f.close();
     g.close();        
    return 0;
}