Cod sursa(job #1017297)

Utilizator ShaDoWsiD100Rzv Rzv ShaDoWsiD100 Data 27 octombrie 2013 17:08:34
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,i,v[1<<16],x,y,z,val,p,u,s;
void querry(int nod,int st,int dr){
    if(st>=p && dr<=u || st==dr){
        s+=v[nod];
        return;}
    int mij=(st+dr)/2;
    if(p<=mij)
        querry(2*nod,st,mij);
    if(u>mij)
        querry(2*nod+1,mij+1,dr);
}
void update(int nod,int st,int dr){
    if(st==dr){
        v[nod]-=z;
        return;}
    int mij=(st+dr)/2;
    if(y<=mij)
        update(2*nod,st,mij);
    else
        update(2*nod+1,mij+1,dr);
    v[nod]-=z;
}
int main()
{
    f>>n>>m;
    for(i=1;i<=n;i++){
        f>>val;
        y=i;
        z=-val;
        update(1,1,n);}
    for(i=1;i<=m;i++){
        f>>x>>y>>z;
        s=0;
        p=y;
        u=z;
        if(x==0)
            update(1,1,n);
        else{
            querry(1,1,n);
            g<<s<<"\n";}
    }
    return 0;
}