Cod sursa(job #719432)

Utilizator mariacMaria Constantin mariac Data 21 martie 2012 19:57:19
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <fstream>

using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int poz,val,start,finish,suma;
int dat[70000];
void act(int nod,int st,int dr){if(st==dr)dat[nod]=val;
                                   else {int m;
                                         m=(st+dr)/2;
                                         if(poz<=m)act(2*nod,st,m);
                                            else act(2*nod+1,m+1,dr);
                                        dat[nod]=dat[nod*2]+dat[nod*2+1];
                                        }
                                }
void inter(int nod,int st,int dr){if(start<=st&&dr<=finish)suma+=dat[nod];
                                    else {int m;m=(st+dr)/2;
                                          if(start<=m)inter(2*nod,st,m);
                                          if(finish>m)inter(2*nod+1,m+1,dr);
                                          }
                                 }

int main()
{int n,m,x,a,b,i;
 fin>>n>>m;
 for(i=1;i<=n;i++)
     {fin>>val;
      poz=i;
      act(1,1,n);
     }
 for(i=1;i<=m;i++)
     {fin>>x;fin>>a;fin>>b;
     if(x==0){poz=a;val=b;
              act(1,1,n);
            }
       else{suma=0;
            start=a;finish=b;
            inter(1,1,n);
            fout<<suma<<"\n";}
     }
    return 0;
}