Cod sursa(job #2776436)

Utilizator KarinAAndrei Karina KarinA Data 19 septembrie 2021 19:37:28
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.6 kb
#include <bits/stdc++.h>
using namespace std;

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

int rmq[100005][30],lg[100005],n,m;

int main()
{
    int i,j;
    in>>n>>m;
    for(i=1;i<=n;i++)
        in>>rmq[i][0];
    lg[1]=0;
    for(i=2;i<=n;i++)
        lg[i]=lg[i/2]+1;
    for(i=1;(1<<i)<=n;i++)
    {
        for(j=1;j<=n-(1<<i)+1;j++)
            rmq[j][i]=min(rmq[j][i-1],rmq[j+(1<<(i-1))][i-1]);
    }
    for(int i=0;i<m;i++)
    {
        int a,b;
        in>>a>>b;
        int l=lg[b-a];
        out<<min(rmq[a][l],rmq[b-(1<<l)+1][l])<<'\n';
    }
    return 0;
}