Cod sursa(job #1740977)

Utilizator Dan_RadulescuRadulescu Dan Dan_Radulescu Data 12 august 2016 17:33:55
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,m,i,a,b,arb[60001],poz,val,s,v[15001],j;
void creare(int nod,int st,int dr){
    int mij;
     if (st==dr){
        arb[nod]=arb[nod]+val;
        return;
     }
     mij=(st+dr)/2;
     if (poz<=mij) creare(2*nod,st,mij);
        else
            creare(2*nod+1,mij+1,dr);
     arb[nod]=arb[2*nod]+arb[2*nod+1];
}
void suma(int nod,int st,int dr){
      int mij;
      if (a<=st && dr<=b){
          s=s+arb[nod];
          return;
      }
      mij=(st+dr)/2;
      if (a<=mij) suma(2*nod,st,mij);
      if (mij<b) suma(2*nod+1,mij+1,dr);
}
int main(){
   fin>>n>>m;
   for (i=1;i<=n;i++){
       fin>>j;
       poz=i;val=j;
       v[i]=j;
       creare(1,1,n);
   }
   for (i=1;i<=m;i++)
   {
       fin>>val>>a>>b;
       if (val==0){
          poz=a;
          val=-b;
          creare(1,1,n);
       }
         else{
            s=0;
            suma(1,1,n);
            fout<<s<<'\n';
         }
   }
   fin.close();
   fout.close();
   return 0;
}