Pagini recente » Cod sursa (job #1949308) | Cod sursa (job #2324164) | Cod sursa (job #1863631) | Cod sursa (job #2726826) | Cod sursa (job #3145593)
#include <fstream>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout("rmq.out");
const int DIM = 100010;
const int LOG_DIM = 18;
int n, m, x, y;
int r[LOG_DIM][DIM], e[DIM];
int main() {
fin >> n >> m;
for (int i = 1; i <= n; i++)
fin >> r[0][i];
for (int i = 1; (1 << i) <= n; i++) {
for (int j = 1; j <= n; j++) {
r[i][j] = r[i - 1][j];
if (j + (1 << (i - 1)) <= n)
r[i][j] = min(r[i][j], r[i - 1][j + (1 << (i - 1))]);
}
}
e[1] = 0;
for (int i = 2; i <= n; i++)
e[i] = 1 + e[i / 2];
for (int i = 1; i <= m; i++) {
fin >> x >> y;
int len = y - x + 1;
int pow = e[len];
int minn = min(r[pow][x], r[pow][y - (1 << pow) + 1]);
fout << minn << '\n';
}
return 0;
}