Cod sursa(job #3284256)

Utilizator stfyyyBirlica Stefan Marian stfyyy Data 11 martie 2025 12:22:51
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <bits/stdc++.h>
#define MAX 500

using namespace std;

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

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

void preprocess() {
    for (int k=2; (1 << k) <= n; ++k) {
        for (int i=1; 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=1; i<=n; ++i) {
        in >> a[i];
        m[i][1] = a[i];
    }
    preprocess();
    int l,r;
    for (int i=1; i<=q; ++i) {
        in >> l >> r;
        out << query(l,r) << '\n';
    }
    return 0;
}