Pagini recente » Cod sursa (job #2810267) | Cod sursa (job #1408207) | Cod sursa (job #2026230) | Cod sursa (job #2965337) | Cod sursa (job #2876221)
#include <bits/stdc++.h>
#define MAXN 100000
#define LOGMAXN 18
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m, arr[MAXN + 1], rmq[LOGMAXN][MAXN + 1];
void generareRMQ() {
for (int i = 1; i <= n; i++)
rmq[0][i] = arr[i];
for (int i = 1; (1 << i) <= n; i++)
for (int j = 1; j + (1 << i) - 1 <= n; j++)
rmq[i][j] = min(rmq[i - 1][j], rmq[i - 1][j + (1 << (i - 1))]);
}
void citire() {
fin >> n >> m;
for (int i = 1; i <= n; i++)
fin >> arr[i];
generareRMQ();
}
int rezolvare() {
int i, j;
fin >> i >> j;
int sz = j - i + 1, lg = (int)log2(sz), sh = sz - (1 << lg);
return min(rmq[lg][i], rmq[lg][i + sh]);
}
int main() {
citire();
for (int i = 0; i < m; i++)
fout << rezolvare() << '\n';
return 0;
}