Cod sursa(job #2010528)

Utilizator seby0007Pop Sebastian seby0007 Data 13 august 2017 14:57:32
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <bits/stdc++.h>

using namespace std;

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

int N, M, k;
vector<vector<int>>D;

int main()
{
    fin >> N >> M;

    int n = (int)log2(N);
    D.resize(n + 1, vector<int>(N + 1));

    for (int i = 1; i <= N; ++i)
        fin >> D[0][i];

    for (int i = 1; i <= n; ++i)
        for (int j = 1; j + (1 << i) - 1 <= N; ++j)
            D[i][j] = min(D[i - 1][j], D[i - 1][j + (1 << (i - 1))]);

    for(int x, y; M; --M)
    {
        fin >> x >> y;
        k = (int)log2(y - x);
        fout << min(D[k][x], D[k][y - (1 << k) + 1]) << "\n";
    }
}