Pagini recente » Cod sursa (job #3173091) | Cod sursa (job #2423317) | Cod sursa (job #1848817) | Cod sursa (job #1293858) | Cod sursa (job #1333956)
#include <cstdio>
#include <algorithm>
using namespace std;
int n,m,lg[100010],k,i,D[20][100010],j,x,y;
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d %d\n",&n,&m);
for(i=2;i<=n;++i)
lg[i]=lg[i/2]+1;
for(i=1;i<=n;++i)
scanf("%d\n",&D[0][i]);
for(i=1;i<=lg[n];++i)
for(j=1;j<=n-(1<<i-1);++j)
D[i][j]=min(D[i-1][j],D[i-1][j+(1<<(i-1))]);
for(i=1;i<=m;++i)
{
scanf("%d %d\n",&x,&y);
k=lg[y-x+1];
printf("%d\n",min(D[k][x],D[k][y-(1<<k)+1]));
}
return 0;
}