Pagini recente » Rating Ruxandra P (RuxyRezidentTM) | Rating Lazar Vlad (Bawee) | Monitorul de evaluare | Cod sursa (job #2785247) | Cod sursa (job #1749709)
#include <cstdio>
using namespace std;
const int N = 1e5 + 5;
int aib[2*N], n;
inline int max(int a, int b){
return a < b ? a : b;
}
void build(){
int i;
for(i = n-1;i >= 1;i--){
aib[i] = max(aib[i<<1], aib[(i<<1)+1]);
}
}
void change(int p, int x){
p += n-1;
aib[p] = x;
int i;
for(i = p>>1;i >= 1;i >>= 1){
aib[i] = max(aib[i<<1], aib[(i<<1)+1]);
}
}
int query(int l, int r){
l += n-1;
r += n-1;
int ret = 1e9;
for(;l <= r;l >>= 1, r >>= 1){
if(l&1){
ret = max(ret, aib[l]);
l++;
}
if((r&1) == 0){
ret = max(ret, aib[r]);
r--;
}
}
return ret;
}
int main(){
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
int i,j,m,p,x;
scanf("%d %d", &n, &m);
for(i = 0;i < n;i++){
scanf("%d", &aib[i+n]);
}
build();
for(i = 1;i <= m;i++){
scanf("%d %d", &p, &x);
printf("%d\n", query(p, x));
}
return 0;
}