Pagini recente » Cod sursa (job #2971182) | Cod sursa (job #526348) | Cod sursa (job #254425) | Cod sursa (job #238772) | Cod sursa (job #2427524)
#include<bits/stdc++.h>
using namespace std;
int rmq[20][100010],n,m,r,lg[100010];
int main(){
ifstream cin("rmq.in");
ofstream cout("rmq.out");
cin>>n>>m;
for(int i=0;i<n;i++)cin>>rmq[0][i];
lg[1]=0;
for(int i=2;i<=n;i++){
lg[i]=lg[i/2]+1;
}
for(int i=1;(1<<i)<=n;i++){
for(int j=0;j<=n-(1<<i);j++){
rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+(1<<(i-1))]);
}
}
for(int p=1;p<=m;p++){
int i,j;
cin>>i>>j;
i--; j--;
int l=j-i+1;
int k=lg[l];
int r=min(rmq[k][i],rmq[k][j-(1<<k)+1]);
cout<<r<<'\n';
}
return 0;
}