Cod sursa(job #3326610)

Utilizator TeodoRazvanStancu Teodor-Razvan TeodoRazvan Data 29 noiembrie 2025 16:10:02
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("rmq.in");
ofstream fout("rmq.out");

int rmq[20][100001], lg[100001];

int main() {
    ios::sync_with_stdio(false);
    fin.tie(NULL);
    fout.tie(NULL);

    int n, q, a, b;
    fin >> n >> q;

    for (int i = 1; i <= n; i++)
        fin >> rmq[0][i];

    for (int e = 1; (1 << e) <= n; e++) {
        for (int i = 1; i + (1 << e) - 1 <= n; i++) {
            rmq[e][i] = min(rmq[e - 1][i],
                            rmq[e - 1][i + (1 << (e - 1))]);
        }
    }

    lg[1] = 0;
    for (int i = 2; i <= n; i++)
        lg[i] = lg[i / 2] + 1;

    while (q--) {
        fin >> a >> b;
        int e = lg[b - a + 1];
        fout << min(rmq[e][a], rmq[e][b - (1 << e) + 1]) << '\n';
    }
}