Pagini recente » Cod sursa (job #1285796) | Cod sursa (job #2846634) | Cod sursa (job #2928477) | Cod sursa (job #2533860) | Cod sursa (job #1333394)
#include<cstdio>
#include<cmath>
using namespace std;
inline int min(int a, int b){if (a<=b) return a; else return b;}
int a[1000001][21], i, j, n, k, x, y, nr;
int main(){
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d", &n, &k);
for (i=1;i<=n;i++) scanf("%d", &a[0][i]);
for (i=1;(1<<i)<=n;i++)
for (j=1;j<=n-(1<<i)+1;j++)
a[i][j]=min(a[i-1][j],a[i-1][j+(1<<(i-1))]);
for (i=1;i<=k;i++) {
scanf("%d%d", &x, &y);
nr=log2(y-x+1);
printf("%d\n", min(a[nr][x],a[nr][y-(1<<nr)+1]));
}
return 0;
}