Cod sursa(job #3122720)

Utilizator luca-pan07PAntelimon Luca luca-pan07 Data 20 aprilie 2023 10:58:33
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.59 kb

#include<fstream>
#include<cmath>
using namespace std;
int m,n,v[100001],puteri[100001],r=0,rmq[20][100001];
ifstream cin("rmq.in");
ofstream cout("rmn.out";)
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
    cin>>v[i];
    if(i>(1<<n)) r++;
    puteri[i]=r;
}
for(int i=1;i<=n;i++)rmq[0][i]=v[i];
for(int i=1;i<puteri[n];i++)
{
    for(int j=1;j<=n-(1<<(i-1));j++)
    {
        int es=j-(1<<(i))-1;
        rmq[i][j]=min(rmq[i][j],rmq[i][es]);

    }
}
int a,b;
for(int i=1;i<=m;i++)
{
    cin>>a>>b;
    int v=puteri[b-a];
    int m=min(rmq[v][a],rmq[v][b-(1<<v)+1]);
    cout<<m;

}

    return 0;
}