Cod sursa(job #2155785)

Utilizator TudoseSanzianaTudose Sanziana TudoseSanziana Data 8 martie 2018 09:26:39
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <bits/stdc++.h>
using namespace std;

const int N_MAX = 1e5, L_MAX = 16;

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

int n, m, x, y;
int rmq[N_MAX + 2][L_MAX + 2];

int main()
{
    in >> n >> m;
    for(int i = 1; i <= n; i++)
        in >> rmq[i][0];

    for(int j = 1; (1 << j) <= n; 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(m--)
    {
        in >> x >> y;
        int lg2 = log2(y - x + 1);

        out << min(rmq[x][lg2], rmq[y - (1 << lg2) + 1][lg2]) << '\n';
    }

    return 0;
}