Cod sursa(job #2900636)

Utilizator Mircea08Tomita Mircea Stefan Mircea08 Data 11 mai 2022 17:12:29
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <bits/stdc++.h>
std::ifstream fin("rmq.in");
std::ofstream fout("rmq.out");
int RMQ[50][100005];
int main() {
    int n, m, i, j;
    fin >> n >> m;
    for (i = 1; i <= n; ++ i)
        fin >> RMQ[0][i];
    for (i = 1; i <= std::__lg(n); ++ i)
        for (j = 1; j + (1 << i) - 1 <= n; ++ j)
            RMQ[i][j] = std::min(RMQ[i - 1][j], RMQ[i - 1][j + (1 << (i - 1))]);
    int x, y, k;
    while (m) {
        -- m;
        fin >> x >> y;
        if (x > y)
            std::swap(x, y);
        k = std::__lg(y - x + 1);
        fout << std::min(RMQ[k][x], RMQ[k][y - (1 << (k - 1))]) << '\n';
    }
    return 0;
}