Cod sursa(job #3294922)

Utilizator AlexN_04Nedelcu Alex AlexN_04 Data 30 aprilie 2025 12:59:26
Problema Range minimum query Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;

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

    long n, m, i, j, x, y;
    fin >> n >> m;
    long rmq[100000][20];
    for (int i = 0; i < n; i++) {
         fin >> rmq[i][0];
    }

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

    for (int nr = 1; nr <= m; nr++) {
         fin >> x >> y;
        x--;
        y--;
        int k = int(log2(y - x + 1));
        int minRMQ = min(rmq[x][k], rmq[y - (1<<k) + 1][k]);
        fout << minRMQ << endl;
    }

    fin.close();
    fout.close();
    return 0;

}