Pagini recente » Cod sursa (job #2432472) | Cod sursa (job #743446) | Cod sursa (job #759514) | Cod sursa (job #2886465) | Cod sursa (job #2672842)
#include <fstream>
#define fisier "rmq"
std::ifstream in(fisier ".in");
std::ofstream out(fisier ".out");
const int N = 100000;
constexpr int log(int n)
{return 1 < n? log(n >> 1) + 1: 0;}
int V[log(N) + 1][N];
int main()
{
int n, m;
in >> n >> m;
for (int i = 0; i < n; i++)
in >> (*V)[i];
for (int l = 1, p; p = l-1, 1 << l < n; l++)
for (int i = 0; (1 << l) + i <= n; i++)
V[l][i] = std::min(V[p][i], V[p][i + (1 << p)]);
while (m--)
{
int i, j, l; in >> i >> j; l = log(-(--i) + j);
out << std::min(V[l][i], V[l][j - (1 << l)]) << '\n';
}
}