Pagini recente » Cod sursa (job #198394) | Cod sursa (job #205094) | Cod sursa (job #1174233) | Cod sursa (job #1010084) | Cod sursa (job #3326610)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int rmq[20][100001], lg[100001];
int main() {
ios::sync_with_stdio(false);
fin.tie(NULL);
fout.tie(NULL);
int n, q, a, b;
fin >> n >> q;
for (int i = 1; i <= n; i++)
fin >> rmq[0][i];
for (int e = 1; (1 << e) <= n; e++) {
for (int i = 1; i + (1 << e) - 1 <= n; i++) {
rmq[e][i] = min(rmq[e - 1][i],
rmq[e - 1][i + (1 << (e - 1))]);
}
}
lg[1] = 0;
for (int i = 2; i <= n; i++)
lg[i] = lg[i / 2] + 1;
while (q--) {
fin >> a >> b;
int e = lg[b - a + 1];
fout << min(rmq[e][a], rmq[e][b - (1 << e) + 1]) << '\n';
}
}