Pagini recente » Cod sursa (job #3037740) | Cod sursa (job #1334748) | Cod sursa (job #2008895) | Cod sursa (job #1340766) | Cod sursa (job #2144733)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int N, M, rmq[20][NMAX], _log[NMAX], st, dr;
int main() {
f >> N >> M >> rmq[0][1];
for (int i = 2; i <= N; ++i) {
f >> rmq[0][i];
_log[i] = _log[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 (M--) {
f >> st >> dr;
int aux = _log[dr - st + 1];
g << min(rmq[aux][st], rmq[aux][dr - (1 << aux) + 1]) << '\n';
}
return 0;
}