Pagini recente » Cod sursa (job #2713631) | Cod sursa (job #1577974) | Cod sursa (job #666040) | Cod sursa (job #1696552) | Cod sursa (job #2592938)
#include <iostream>
#include <fstream>
#include <algorithm>
#define MAX_N 100000
#define MAX_L 19
using std::cin;
using std::cout;
int rmq[MAX_L][MAX_N + 1], log[MAX_N + 1];
int main() {
std::ifstream fin("rmq.in");
std::ofstream fout("rmq.out");
int n, m;
fin >> n >> m;
for (auto i = 2 ; i <= n ; i++)
log[i] = log[i >> 1] + 1;
for (auto i = 1 ; i <= n ; i++)
fin >> rmq[0][i];
for (auto i = 1 ; (1 << i) <= n ; i++)
for (int j = (1 << i) ; j <= n ; j++)
rmq[i][j] = std::min(rmq[i - 1][j], rmq[i - 1][j - (1 << (i - 1))]);
for (auto i = 1 ; i <= m ; i++) {
int x, y;
fin >> x >> y;
const auto l = log[y - x + 1];
fout << std::min(rmq[l][y], rmq[l][x - 1 + (1 << l)]) << '\n';
}
return 0;
}