Cod sursa(job #2854341)

Utilizator raulandreipopRaul-Andrei Pop raulandreipop Data 21 februarie 2022 11:32:32
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <bits/stdc++.h>

using namespace std;

const int rmqMax = log2(100100);

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

int rmq[100100][20];
int a[100100];

int main() {
    int n, q;
    in >> n >> q;
    for (int i = 1; i <= n; i++)
    {
        in >> a[i];
        rmq[i][0] = a[i];
    }
    for (int i = 1; i <= 20; i++)
    {
        for (int k = 1; k <= n; k++)
        {
            rmq[k][i] = min(rmq[k][i-1], rmq[k + (1 << (i - 1))][i-1]);
        }
    }

    while (q--)
    {
        int s, d;
        in >> s >> d;
        int j = log2(d - s + 1);
        out << min(rmq[s][j], rmq[d - (1 << j) + 1][j]) << '\n';
    }

    return 0;
}