Cod sursa(job #1675087)

Utilizator SirStevensIonut Morosan SirStevens Data 5 aprilie 2016 08:47:39
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("datorii.in");
ofstream out("datorii.out");

#define Nmax 400000

int v[Nmax],n,m,pos,a,b,s,start,finish,x,val;

void Update(int nod, int l, int r){

    if(l == r){
        v[nod]=val;
        return;
    }

    int mij=(l + r)/2;
    if(pos <= mij) Update(2*nod,l,mij);
    else Update(2*nod + 1,mij+1,r);

    v[nod]=max(v[2*nod],v[2*nod+1]);
}

void Querry(int nod, int l, int r){

    if(start <= l && finish >= r){
        s+=v[nod];
        return;
    }

    int mij=(l + r)/2;
    if(start <= mij )Querry(2*nod,l,mij);
    if(finish > mij) Querry(2*nod +1,mij+1,r);



}

int main(){

in>>n>>m;
for(int i=1;i<=n;i++){
    in>>val;
    pos=i;
    Update(1,1,n);
    out<<v[i]<<" ";
}

for(int i=1;i<=m;i++){

    in>>x>>a>>b;

    if(x == 1){
        s=0;
        start=a;
        finish=b;
        Querry(1,1,n);
        //out<<s<<'\n';

    }
    else{

        pos=a;
        val=b;
        Update(1,1,n);
    }
}

return 0;

}