Cod sursa(job #3279866)

Utilizator LucaWalucaLuca Munteanu LucaWaluca Data 24 februarie 2025 16:40:22
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int rmq[20][100005],lgn,lgm;
int main()
{
    int n,m,a,b;
    in>>n>>m;
    lgn=log2(n);
    for(int i=0;i<n;i++)
        in>>rmq[0][i];
    for(int i=1;i<=lgn;i++)
        for(int j=0;j<n-(1<<i)+1;j++)
            rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+(1<<(i-1))]);
    for(int i=1;i<=m;i++)
    {
        in>>a>>b;
        a--;
        b--;
        if(a==b)
            lgm=0;
        else
            lgm=log2(b-a);
        out<<min(rmq[lgm][a],rmq[lgm][b-(1<<lgm)+1])<<"\n";
    }
    return 0;
}