Pagini recente » Cod sursa (job #1096438) | Cod sursa (job #1177687) | Cod sursa (job #224266) | Cod sursa (job #1402155) | Cod sursa (job #1602494)
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
#define DIM 100005
int rmq[20][DIM], N, Q, lungimi[DIM], x, y;
int main() {
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d %d\n", &N, &Q);
for(int i = 1; i <= N; ++i) {
scanf("%d\n", &rmq[0][i]);
}
lungimi[1] = 0;
for(int i = 2; i <= N; ++i) {
lungimi[i] = lungimi[i / 2] + 1;
}
for(int i = 1; (1 << i) <= N; ++i) {
for(int j = 1; j <= N - (1 << i) + 1; ++j) {
rmq[i][j] = min(rmq[i - 1][j], rmq[i - 1][j + (1 << (i - 1))]);
}
}
while(Q) {
--Q;
scanf("%d %d\n", &x, &y);
int s = y - x + 1 - (1 << (lungimi[y - x + 1]));
cout << min(rmq[lungimi[y - x + 1]][x], rmq[lungimi[y - x + 1]][x + s]) << '\n';
}
return 0;
}