Cod sursa(job #3286589)

Utilizator ankaramessiankaramessi ankaramessi Data 14 martie 2025 13:42:12
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

#define pb push_back
#define ll long long
#define NMAX 100005
#define INF 1000000000
#define MOD 666013

int v[NMAX], rmq[NMAX][20];

int query(int i, int j) {
    int x = __lg(j - i + 1);
    return min(rmq[i][x], rmq[j - (1 << x) + 1][x]);
}

int main() {
    ifstream cin("rmq.in");
    ofstream cout("rmq.out");
    ios::sync_with_stdio(false), cin.tie(0);
    int n, q;
    cin >> n >> q;

    for (int i = 1; i <= n; i++) cin >> v[i];

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

    int x = __lg(n);
    for (int j = 1; j <= x; j++)
        for (int i = 1; i <= n - (1 << j) + 1; i++)
            rmq[i][j] = min(rmq[i][j - 1], rmq[i + (1 << (j - 1))][j - 1]);

    while (q--) {
        int x, y;
        cin >> x >> y;
        cout << query(x, y) << '\n';
    }
    return 0;
}