Pagini recente » Cod sursa (job #1139894) | Cod sursa (job #1946658) | Cod sursa (job #1971689) | Cod sursa (job #1591079) | Cod sursa (job #1882325)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
const int Max = 100001;
int n,m,arb[2*Max],t,a,b;
void update(int poz,int val){
poz+=n-1;
arb[poz]=val;
int aux;
while(poz>1){
aux=poz/2;
arb[aux]=max(arb[poz],arb[poz^1]);
poz=aux;
}
}
int query(int st,int dr){
int rez=0;
st+=n-1;
dr+=n-1;
while(st<=dr){
rez=max(rez,max(arb[st],arb[dr]));
st=(st+1)/2;
dr=(dr-1)/2;
}
return rez;
}
int main()
{
fin>>n>>m;
int i;
for(i=0;i<n;i++)
fin>>arb[n+i];
for(i=n-1;i;i--)
arb[i]=max(arb[2*i],arb[2*i+1]);
for(i=1;i<=m;i++){
fin>>t>>a>>b;
if(t==0)
fout<<query(a,b)<<'\n';
else
update(a,b);
}
return 0;
}