Cod sursa(job #3353940)

Utilizator 3fr3mFarcasanu Efrem 3fr3m Data 12 mai 2026 19:07:12
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

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

int rmq[20][100001], n, m;

int main()
{
    fin >> n >> m;
    for(int i = 1; i <= n; i++)
    {
        fin >> rmq[0][i];
    }
    for(int i = 1, l = 2; l <= n; l *= 2, i++)
    {
        for(int j = l; j <= n; j++)
        {
            rmq[i][j] = min(rmq[i = 1][j - l / 2], rmq[i - 1][j]);
        }
    }
    int x, y;
    while(m--)
    {
        fin >> x >> y;
        if(x > y)
        {
            swap(x, y);
        }
        int p = 1, e = 0;
        while(p <= y - x + 1)
        {
            p *= 2, e++;
        }
        p /= 2, e--;

        fout << min(rmq[e][x + p - 1], rmq[e][y]) << '\n';
    }

}