Pagini recente » Cod sursa (job #1432514) | Cod sursa (job #234442) | Cod sursa (job #2419392) | Cod sursa (job #553271) | Cod sursa (job #2608725)
#include <cstdio>
#define min(a, b) ((a < b) ? a : b)
int a[20][100005], log[100005];
int main() {
int n, m, i, j, x, y, l;
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
scanf("%d%d", &n, &m);
for(i = 1; i <= n; ++i)
scanf("%d", &a[0][i]);
for(i = 2; i <= n; ++i)
log[i] = log[i/2] + 1;
for(i = 1; (1 << i) <= n; ++i)
for(j = 1; j + (1 << i) <= n + 1; ++j)
a[i][j] = min(a[i-1][j], a[i-1][j + (1 << (i-1))]);
for(i = 1; i <= m; ++i) {
scanf("%d%d", &x, &y);
l = log[y-x+1];
printf("%d\n", min(a[l][x], a[l][y + 1 - (1 << l)]));
}
}