Cod sursa(job #2818664)

Utilizator popabianca31Popa Bianca popabianca31 Data 16 decembrie 2021 17:15:47
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

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

int i, n, m, x, y, l, j, st;
int rmq[22][100005];
int lg[100005];

int main()
{
    fin >> n >> m;

    for(i = 1; i <= n; i++)
        fin >> rmq[0][i];
    for(i = 1; (1 << i) <= n; i++)
    {
        for(j = 1; j + (1 << (i-1)) -1  <= n; j++ )
        {
            rmq[i][j]= min (rmq[i-1][j], rmq[i-1][j + (1 << (i-1))]);
        }

    }

    for(i = 0; (1 << i) <= n; i++)
    {
        for(j = 1; j <= n; j++ )
            cout << rmq [i][j] << " ";
        cout << "\n";
    }

    for (i = 2; i <= n; i++)
        lg[i] = lg[i / 2] + 1;
    for(i = 1; i <= m; i++)
    {
        fin >> x >> y;
        l = y - x + 1;
        l = lg[l];
        cout << min (rmq[l][x], rmq[l][y -(1 << l) +1]) << "\n";

    }
    return 0;
}