Cod sursa(job #1370612)

Utilizator vladutz15FMI Cornoiu Vlad vladutz15 Data 3 martie 2015 16:05:33
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
#define NMAX 15003
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,x,i,pos,val,tip,a,b,st,dr,sum;
int arb[4*NMAX],t;
void update( int nod, int left, int right, int val)
{
    if (left==right)
    {
        arb[nod]+=val;
        return;
    }
    int div=(left+right)/2;
    if (pos<=div) update(2*nod,left,div,val);
    else update(2*nod+1,div+1,right,val);
    arb[nod]=arb[2*nod]+arb[2*nod+1];
}
void query( int nod, int left, int right)
{
    if (st<=left && right<=dr)
    {
        sum+=arb[nod];
        return;
    }
    int div=(left+right)/2;
    if (st<=div) query(2*nod,left,div);
    if (div<dr) query(2*nod+1,div+1,right);
}
int main()
{
   f>>n>>m;
   for (i=1;i<=n;i++)
   {
       f>>x;
       pos=i;
       update(1,1,n,x);
   }
   for (i=1;i<=n;i++)
   {
       f>>tip;
       if (tip==0)
       {
           f>>a>>b;
           pos=a;
           update(1,1,n,-b);
       }
       else
       {
           f>>a>>b;
           sum=0;
           st=a;
           dr=b;
           query(1,1,n);
           g<<sum<<"\n";
       }
   }
       return 0;
}