Cod sursa(job #1628935)

Utilizator UngureanuRuxandraUngureanu Andreea Ruxandra UngureanuRuxandra Data 4 martie 2016 11:41:25
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,s,i,val,poz,x,y,semn,a[150000001];
void interogare(int nod, int st, int dr)
 {int mij; if ( x <= st && dr <= y ) {
        s=s+a[nod];

    }
    else
    {mij = (st + dr) / 2;
    if (x<= mij )
        interogare (2 * nod, st, mij);
    if ( mij < y )
        interogare (2 * nod + 1, mij + 1, dr);
}
 }
void achitare(int nod, int st, int dr, int sgn)
 {int mij;
     if ( st == dr )
        a[nod] += val * sgn;

    else
    {mij = (st + dr) / 2;
    if ( poz <= mij )
        achitare(2 * nod, st, mij, sgn);
    else
        achitare (2 * nod + 1, mij + 1, dr, sgn);

    a[nod] = a[2 * nod] + a[2 * nod + 1];
}}
int main()
{f>>n>>m;
 for(i=1;i<=n;++i)
 {f>>val;
  poz=i;
  achitare(1,1,n,1);

 }
    for(i=1;i<=m;++i)
    {f>>semn>>x>>y;
      if(semn==0)
      { val=y;
        poz=x;
        achitare(1,1,n,-1);

      }
        else
        {s=0;
        interogare(1,1,n);
            g<<s<<'\n';

        }
    }
    return 0;
}