Cod sursa(job #213925)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 12 octombrie 2008 00:48:44
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
//aib
#include <fstream>
#define loop ((poz^(poz-1))&poz)

using namespace std;

ifstream fin ("datorii.in");
ofstream fout ("datorii.out");

int sir[15001];
int n,m;

void update(int poz,int val)
{
     while (poz<=n)
     {
          sir[poz]-=val;
          poz+=loop;
     }
}

int suma (int poz)
{
     int S=0;
     while (poz>0)
     {
          S+=sir[poz];
          poz-=loop;
     }
     return S;
}

void citire()
{
     int val;
     fin>>n>>m;
     for (int i=0;i<n;i++)
     {
          fin>>val;
          update(i+1,-val);
     }

     int ok,a,b;

     for (int i=0;i<m;i++)
     {
          fin>>ok>>a>>b;
          if (ok==0)
          {
               update(a,b);
          }
          else
          {
               fout<<suma(b)-suma(a-1)<<"\n";
          }
     }
}

int main ()
{
     citire();
     return 0;
}