Cod sursa(job #1555145)

Utilizator Darius15Darius Pop Darius15 Data 22 decembrie 2015 12:53:56
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>

using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int val,vec[60001],sum,n,m,z,t,x,y,poz,i,j;
void update(int nod,int st,int dr)
{
  int m;
  if (st==dr)
     vec[nod]+=val;
  else{
     m=(st+dr)/2;
     if (poz<=m) update(2*nod,st,m);
     else update(2*nod+1,m+1,dr);
     vec[nod]=vec[2*nod]+vec[2*nod+1];
  }
}
void query(int nod,int st,int dr)
{
  int m;
  if (i<=st && dr<=j)
    sum+=vec[nod];
  else
  {
    m=(st+dr)/2;
    if (m<j) query(2*nod+1,m+1,dr);
    if (m>=i) query(2*nod,st,m);
  }
}
int main()
{
    f>>n>>m;
    for (i=1;i<=n;i++)
      f>>val,poz=i,update(1,1,n);
     for (z=1;z<=m;z++)
     {
       f>>t>>x>>y;
       if (t==0)
       {
         poz=x;
         val=-y;
         update(1,1,n);
       }
       else
       {
         sum=0;
         i=x,j=y;
         query(1,1,n);
         g<<sum<<'\n';
       }
     }
    return 0;
}