Cod sursa(job #2904184)

Utilizator DumilexLem-Rau Dumitru Alexandru Dumilex Data 17 mai 2022 22:37:24
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int i,j,n,m,a,b,l,k;
int M[17][100001];

int main()
{
    f >> n >> m;
    for(i = 1; i <= n; i++)
        f >> M[0][i];
    for(i = 1; (1 << i) <= n; i++) {
        for(j = 1; j <=  n - (1 << i) + 1; j++){
            M[i][j] = (M[i-1][j] < M[i-1][(1<<(i-1)) + j]) ? M[i-1][j] :  M[i-1][(1<<(i-1))+j];
        }
    }
    for(int i = 0; i < m; i++)
    {
        k = 0;
        f >> a >> b;
        l= b - a + 1;
        while( (1<<(k + 1)) <= l)
        k++;
        g << ((M[k][a] < M[k][b-(1<<k) + 1]) ? M[k][a] : M[k][b - (1 << k) + 1] ) << '\n';
    }
    return 0;
}