Pagini recente » Cod sursa (job #2812569) | Cod sursa (job #2274943) | Cod sursa (job #1444062) | Cod sursa (job #3136173) | Cod sursa (job #229628)
Cod sursa(job #229628)
#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;
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 = y - x + 1;
printf("%d\n",min(c[1<<(t[j] - 1)][x], c[1<<(t[j] - 1)][y - (1<<(t[j] - 1))]));
}
return 0;
}