Pagini recente » Cod sursa (job #1606958) | Cod sursa (job #1242) | Cod sursa (job #3214618) | Cod sursa (job #635724) | Cod sursa (job #356885)
Cod sursa(job #356885)
#include <iostream>
#include<fstream>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int a[50001],n,x,px,m,maxf;
void constructie(int nod,int st, int dr){
if(st>dr)
return;
if(st==dr)
a[nod]=x;
int mij=(st+dr)/2;
if(px<=mij)
constructie(2*nod, st,mij);
else
constructie(2*nod,mij+1,dr);
}
void maxim_interval(int nod, int st, int dr){
if(px<=st&&x>=dr){
if(maxf<a[nod])
maxf=a[nod];
return;
}
int mij=(st+dr)/2;
if(px<=mij)
constructie(nod*2,st,mij);
else
constructie(nod*2+1,mij+1,dr);
}
void citire(){
fin>>n>>m;
for(int i=0;i<n;i++){
fin>>x;
px=i;
constructie(1,1,n);
}
int ok;
for(int i=0;i<m;i++){
fin>>ok>>px>>x;
maxf=-1;
if(ok==0){
maxim_interval(1,1,n);
fout<<maxf<<"\n";
}
else
constructie(1,1,n);
}
}
int main(){
citire();
return 0;
}