Cod sursa(job #3310690)

Utilizator cosmin_90Drignei Cosmin-Cristian cosmin_90 Data 15 septembrie 2025 20:33:36
Problema Range minimum query Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
long long int n,m;
long long int mat[20][100001];
int main(){
    fin>>n>>m;
    for(int i=1;i<=n;i++){
        fin>>mat[0][i];
        //fout<<mat[0][i]<<" ";
    }
    //fout<<endl;
    for(int i=1;i<17;i++){
        for(int j=1;j<=n-pow(2,i)+1;j++){
            long long int putere=pow(2,i-1);
            mat[i][j]=min(mat[i-1][j],mat[i-1][j+putere]);
            //fout<<mat[i][j]<<" ";
        }
        //fout<<endl;
    }
    long long int l,r,logaritm,putere;
    for(int i=0;i<m;i++){
        fin>>l>>r;
        logaritm=log2l(r-l+1);
        putere=pow(2,logaritm);
        fout<<min(mat[logaritm][l],mat[logaritm][r-putere+1])<<endl;
    }
}