Pagini recente » Cod sursa (job #1113096) | Cod sursa (job #556496) | Cod sursa (job #1044987) | Cod sursa (job #1392241) | Cod sursa (job #2428193)
#include <fstream>
#define MAX 100005
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int n,q,Arb[4*MAX];
int poz,val,start,finish,maxim;
void read();
void solve();
void Update(int,int,int);
void Query(int,int,int);
int main(){
read();
solve();
return 0;
}
void Query(int nod, int st, int dr){
if(start<=st&&finish>=dr){
maxim=max(maxim,Arb[nod]);
return;
}
int mij=(st+dr)>>1,ans=0;
if(mij<finish)
Query(nod*2+1,mij+1,dr);
if(mij>=start)
Query(nod*2,st,mij);
}
void Update(int nod, int st,int dr){
if(st==dr){
Arb[nod]=val;
return;
}
int mij=(st+dr)>>1;
if(poz<=mij)
Update(nod*2,st,mij);
else
Update(nod*2+1,mij+1,dr);
Arb[nod]=max(Arb[nod*2],Arb[nod*2+1]);
}
void solve(){
bool task;
int a,b;
while(q--){
fin>>task>>a>>b;
if(task){
poz=a;
val=b;
Update(1,1,n);
}
else{
start=a, finish=b, maxim=0;
Query(1,1,n);
fout<<maxim<<'\n';
}
}
}
void read(){
int i;
fin>>n>>q;
for(i=1;i<=n;++i){
fin>>val;
poz=i;
Update(1,1,n);
}
}