Cod sursa(job #2619749)

Utilizator FLORENTIN-GIULIANO.DUMITRUDumitru Florentin Giuliano FLORENTIN-GIULIANO.DUMITRU Data 28 mai 2020 13:07:58
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <algorithm>
#include <cmath>
#include <iostream>

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

int main()
{
    int n,m,minimuri[100009][18];
    in>> n >> m;
    for(int i=1; i<=n; i++) {
        in >> minimuri[i][0];
    }
    for(int j=1;j<=18;j++)
    {
        for(int i=1;i<=n-(1<<(j))+1;i++)
        {
            minimuri[i][j]=std::min(minimuri[i][j-1],minimuri[i+(1<<(j-1))][j-1]);
        }
    }
    for (int i=1;i<=m;++i)
    {
        int st,dr;
        in>>st>>dr;
        int poz=log2(dr-st+1);
        out<<std::min(minimuri[st][poz],minimuri[dr-(1<<poz)+1][poz])<<"\n";
    }
    return 0;
}