Cod sursa(job #3284269)

Utilizator stfyyyBirlica Stefan Marian stfyyy Data 11 martie 2025 12:37:47
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <bits/stdc++.h>
#define MAX 100001

using namespace std;

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

int m[MAX][18], a[MAX], n, q;

void preprocess() {
    for (int k=1; (1 << k) <= n; ++k) {
        for (int i=0; i + (1 << k) - 1 < n; ++i) {
            m[i][k] = min(m[i][k-1], m[i + (1 << (k-1))][k-1]);
        }
    }
}

int query(int l, int r) {
    int j = (int)log2(r - l + 1);

    return min(m[l][j], m[r - (1 << j) + 1][j]);
}

int main() {
    in >> n >> q;
    for (int i=0; i<n; ++i) {
        in >> a[i];
        m[i][0] = a[i];
    }
    preprocess();
    int l,r;
    for (int i=1; i<=q; ++i) {
        in >> l >> r;
        out << query(l-1,r-1) << '\n';
    }
    return 0;
}