Cod sursa(job #3278259)

Utilizator DasapSapunaru Daniel Dasap Data 18 februarie 2025 21:24:05
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.5 kb
#include <iostream>
#include<fstream>
using namespace std;ifstream fin("rmq.in");ofstream fout("rmq.out");
int n,m,k,v[100001][17],log2[100001],i,j,limit,st,dr,lg;
int main()
{fin>>n>>m>>v[1][0];for(i=2;i<=n;i++){fin>>v[i][0];log2[i]=log2[i/2]+1;}
for(i=1;i<=log2[n];i++){
    limit=n-(1<<i)+1;
    for(j=1;j<=limit;j++){
        v[j][i]=min(v[j][i-1],v[j+(1<<(i-1))][i-1]);
    }
}while(m--){
    fin>>st>>dr;lg=log2[dr-st+1];
    fout<<min(v[st][lg],v[dr-(1<<lg)+1][lg])<<'\n';
}

    return 0;
}