Pagini recente » Cod sursa (job #801567) | Cod sursa (job #2123221) | Cod sursa (job #292077) | Cod sursa (job #790824) | Cod sursa (job #2445212)
#include <iostream>
#include <cstdio>
#include <cmath>
#define maxl int(log2(100000))+2
using namespace std;
int n, m, val[maxl][100001], i, j;
int main()
{
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
scanf("%d%d", &n, &m);
for(i=1; i<=n; ++i) scanf("%d", &val[0][i]);
for(j=1; (1<<j)<=n; ++j){
for(i=1; i<=n; ++i){
val[j][i]=val[j-1][i];
int next=i+(1<<(j-1));
if(next<=n) val[j][i]=min(val[j][i], val[j-1][next]);
}
}
for(i=1; i<=m; ++i){
int x, y;
scanf("%d%d", &x, &y);
int j=int(log2(y-x+1));
printf("%d\n", min(val[j][x], val[j][y-(1<<j)+1]));
}
return 0;
}