Cod sursa(job #1792593)

Utilizator OFY4Ahmed Hamza Aydin OFY4 Data 30 octombrie 2016 16:15:56
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

int rmq[20][100007], Log[100007];

int main()
{
    int n, m, x, y;

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

    for(int i = 2; i <= n; ++i)
        Log[i] = L_og[i / 2] + 1;

    for(int l = 1; l <= Log[n]; ++l)
    {
        for(int i = 1; i + (1 << l) - 1 <= n; ++i)
        {
            rmq[l][i] = min(rmq[l - 1][i], rmq[l - 1][i + (1 << (l - 1))]);
        }
    }
    for(int i = 1; i <= m; ++i)
    {
        in >> x >> y;
        int l = Log[y - x + 1];
        int cevap = min(rmq[l][x], rmq[l][b - (1 << l) + 1]);
        out << cevap << "\n";
    }
}