Pagini recente » Cod sursa (job #127314) | Cod sursa (job #3355134) | Cod sursa (job #1464699) | Cod sursa (job #2955384) | Cod sursa (job #3330532)
#include<iostream>
using namespace std;
#define MAX2 35
#define NMAX 100001
int lg2[MAX2],rmq[MAX2][NMAX];
signed main(...){
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
int n,q;
cin>>n>>q;
for(int i=1;i<=n;++i){
cin>>rmq[0][i];
if(i>1)lg2[i]=lg2[i>>1]+1;
}
for(int k=1;(1<<k)<=n;++k){
for(int i=(1<<k);i<=n;++i){
rmq[k][i]=min(rmq[k-1][i],rmq[k-1][i-(1<<(k-1))]);
}
}
for(;q;--q){
int x,y;
cin>>x>>y;
int l=lg2[y-x+1];
cout<<min(rmq[l][x+(1<<l)-1],rmq[l][y])<<"\n";
}
return 0;
}