Pagini recente » Cod sursa (job #454919) | Cod sursa (job #2870436) | Cod sursa (job #2775487) | Cod sursa (job #1025503) | Cod sursa (job #2273200)
#include<fstream>
#define N 100000
#define S 300
#define D 400
using namespace std;
ifstream cin("arbint.in");
ofstream cout("arbint.out");
int batog[D+1];
int v[N+1];
void update(int a, int b){
v[a] = b;
batog[a / S] = 0;
for(int i = (a / S) * S; i / S == a / S; i++)
batog[a / S] = max(batog[a / S], v[i]);
}
int querybat(int a, int b){
int ans = 0;
for(int i = a; i < b; i++)
ans = max(ans, batog[i]);
return ans;
}
int queryint(int a, int b){
int ans = 0;
for(int i = a; i < b; i++)
ans = max(ans, v[i]);
return ans;
}
int query(int a, int b){
if (a / S == b / S) return queryint(a, b + 1);
return max(queryint(a, (a / S + 1) * S), max(queryint((b / S) * b, b + 1), querybat(a / S + 1, b / S)));
}
int main(){
int n,m;
cin>>n>>m;
for(int i = 0; i < n; i++){
cin>>v[i];
// v[i] = 500;
batog[i / S] = max(batog[i / S], v[i]);
}
// for(int i = 0; i <= (n - 1) / S; i++)
// cout<<batog[i]<<' ';
// cout<<endl<<endl;
for(int i = 0; i < m; i++){
int op,a,b;
cin>>op>>a>>b;
if (op == 0) cout<<query(a - 1, b - 1)<<'\n';
else {
update(a - 1, b);
// for(int i = 0; i <= (n - 1) / S; i++)
// cout<<batog[i]<<' ';
// cout<<endl<<endl;
}
}
return 0;
}