Cod sursa(job #2760704)

Utilizator VladCaloVlad Calomfirescu VladCalo Data 28 iunie 2021 18:46:44
Problema Range minimum query Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
//
//  main.cpp
//  Range minimum query
//
//  Created by Vlad Calomfirescu on 14.05.2021.
//

#include <bits/stdc++.h>
#include <math.h>

using namespace std;

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

int n,m,j,rmq[20][100002],l,x,y,z,i,k,rez;
int lg[100002];
int main()
{
    fin>>n>>m;
 
    for(j=1; j<=n; j++)
        fin>>rmq[0][j];
 
    for( i=1; (1<<i)<=n ; i++ )
        for( j=1 ; j<=n-(1<<i)+1 ; j++ )
            rmq[i][j] = min( rmq[i-1][j], rmq[i-1][j+(1<<i)/2] );
 
    lg[1]=0;
    for (i=2; i<=n; i++) {
        lg[i]=lg[i/2]+1;
    }
    
    for(k=1; k<=m; k++)
    {
        fin>>x>>y;
        
        i = lg[y-x+1];
        
        rez=min(rmq[i][x],rmq[i][y-(1<<i)+1]);
        fout<<rez<<endl;
    }
 
    return 0;
}