Pagini recente » Cod sursa (job #902081) | Cod sursa (job #1550978) | Cod sursa (job #2087729) | Cod sursa (job #1368927) | Cod sursa (job #1688588)
#include <bits/stdc++.h>
#define maxN 100005
#define maxLog 18
using namespace std;
int n, m, i, j, st, dr, x, y, l, p, s;
int rmq[maxLog][maxN];
int v[maxN];
int lg[maxN];
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", &v[i]);
lg[0]=1;
for(i=2; i <= n; i++)
lg[i]=1+lg[i/2];
for(i=1; i <= n; i++)
rmq[0][i]=v[i];
for(i=1; (i<<1) <= n; i++)
for(j=1; j <= n-(1<<i)+1; j++)
{
l=(1<<(i-1));
rmq[i][j]=min(rmq[i-1][j], rmq[i-1][j+l]);
}
while(m--)
{
scanf("%d %d", &x, &y);
l=y+1-x;
p=lg[l];
s=l-(1<<p);
printf("%d\n", min(rmq[p][x], rmq[p][x+s]));
}
return 0;
}