Cod sursa(job #2672842)

Utilizator KPP17Popescu Paul KPP17 Data 15 noiembrie 2020 08:55:02
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#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';
    }
}