Pagini recente » Cod sursa (job #515838) | Cod sursa (job #1599705) | Cod sursa (job #1666530) | Cod sursa (job #918943) | Cod sursa (job #229637)
Cod sursa(job #229637)
#include <stdio.h>
int N, c[20][100005], M, t[100005];
int min(int x, int y) { return x < y ? x :y;}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
int i, j, x, y, p;
scanf("%d %d",&N,&M);
for (i = 1; i <= N; i++) scanf("%d",&c[0][i]);
t[1] = 0;
for (i = 2; i <= N; i++) t[i] = t[i / 2] + 1;
for (i = 1; (1 << i) <= N; i++)
{
for (j = 1; j <= N - (1 << i) + 1; j++)
c[i][j] = min(c[i - 1][j], c[i - 1][j + (1<<(i - 1))]);
}
for (i = 1; i <= M; i++)
{
scanf("%d %d",&x,&y);
j = t[y - x + 1];
printf("%d\n",min(c[j][x], c[j][y - (1<<j) + 1]));
}
return 0;
}