Cod sursa(job #3000202)

Utilizator net_10Stefan Alexandu net_10 Data 12 martie 2023 10:25:00
Problema Range minimum query Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include <bits/stdc++.h>

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

#define cin fin
#define cout fout
int n,m,i,ex,ind,rmq[17][20000],p2,x,lg,a,b;
int main()
{
    cin>>n>>m;
    for(i=1;i<=n;i++)
    {
        cin>>rmq[0][i];
    }
    for(ex=1,p2=2;p2<=n;p2*=2,++ex)
    {
        for(i=1;i<=n-p2+1;++i)
        {
            rmq[ex][i]=min(rmq[ex-1][i],rmq[ex-1][i+(p2/2)]);
        }
    }
    for(i=1;i<=m;i++)
    {
        cin>>a>>b;
        lg=b-a+1;
        x=log2(lg);
        cout<<min(rmq[x][a],rmq[x][b-(1<<x)+1])<<'\n';
    }




    return 0;
}