Cod sursa(job #1736769)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 2 august 2016 16:35:25
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;

constexpr int MAX_LG = 17;
constexpr int MAX_N = 100000 + 1;

int rmq[MAX_LG][MAX_N];
int _log2[MAX_N];

int query(int x, int y)
{
    int dif = y - x + 1;
    int k = _log2[k];

    return min(rmq[k][x] , rmq[k][y - (1 << k) + 1]);
}

int main()
{
    ifstream in("rmq.in");
    ofstream out("rmq.out");

    int N, Q;
    in >> N >> Q;

    for (int i = 1; i <= N; ++i)
        in >> rmq[0][i];

    for (int i = 1; (1 << i) <= N; ++i)
        for (int j = 1; j + (1 << i) - 1 <= N; ++j)
        {
            int p = 1 << (i - 1);
            rmq[i][j] = min(rmq[i - 1][j], rmq[i - 1][j + p]);
        }

    while (Q--)
    {
        int x, y;
        in >> x >> y;
        out << query(x, y) << "\n";
    }

    return 0;
}