Pagini recente » Rating Ana Floares (anafloares) | Cod sursa (job #2566088) | Cod sursa (job #2733628) | Cod sursa (job #2827951) | Cod sursa (job #2924417)
#include <fstream>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int a[100001];
int m[100001][17];
int query(int l,int r){
int len=r-l+1;
int k=0;
while((l<<(k+1))<=len)
k++;
return min(m[l][k],m[r-(1<<k)+1][k]);
}
int main(){
int n,log=17;
int q;
cin>>n;
cin>>q;
for(int i=1;i<=n;++i){
cin>>a[i];
m[i][0]=a[i];
}
for(int j=1;j<log;j++){
for(int i=1;i+(1<<j)-1<=n;i++)
m[i][j]=min(m[i][j-1],m[i+(1<<(j-1))][j-1]);
}
for(int i=1;i<=q;++i){
int l,r;
cin>>l>>r;
cout<<query(l,r)<<" ";
}
return 0;
}