Pagini recente » Cod sursa (job #378440) | Cod sursa (job #213764) | gigi_becali | Cod sursa (job #1721164) | Cod sursa (job #2273232)
#include<fstream>
#define N 100000
#define S 300
#define D 400
using namespace std;
ifstream cin("arbint.in");
// ifstream cin("grader_test3.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);
// if (i == 7){
// cout<<endl;
// cout<<queryint(a, (a / S + 1) * S)<<endl;
// cout<<queryint((b / S) * S, b + 1)<<endl;
// cout<<querybat(a / S + 1, b / S)<<endl;
// }
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;
}