Cod sursa(job #2751154)

Utilizator VladCaloVlad Calomfirescu VladCalo Data 14 mai 2021 13:37:47
Problema Range minimum query Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
//
//  main.cpp
//  Range minimum query
//
//  Created by Vlad Calomfirescu on 14.05.2021.
//

#include <iostream>
#include <fstream>

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 main()
{
  fin>>n>>m;
 
    for(j=1; j<=n; j++)
        fin>>rmq[0][j];
 
    for( i=1,l=2; l<=n ; i++,l=2*l )
        for( j=1 ; j+l-1<=n ; j++ )
            rmq[i][j] = min( rmq[i-1][j], rmq[i-1][j+l/2] );
 
    for(k=1; k<=m; k++)
    {
 
        fin>>x>>y;
        z=y-x+1;
 
        i=0;
        l=1;
        while(l*2<=z)
        {
            i++;
            l=l*2;
        }
        rez=min(rmq[i][x],rmq[i][y-l+1]);
        fout<<rez<<endl;
    }
 
    return 0;
}