Cod sursa(job #2405890)

Utilizator MoldooooooooMoldoveanu Stefan Moldoooooooo Data 15 aprilie 2019 09:56:49
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int N, List[100001], i, j, lg2[21], M, Sol[21][100001];
int main()
{
    fin>>N>>M;
    for(i=1; i<=N; ++i) {
        fin>>Sol[0][i];
    }
    Sol[0][N+1]=100001;
    for(j=1; (1<<j)<=N; ++j)
        for(i=1; i<=N; ++i)
        Sol[j][i]=min(Sol[j-1][i], (i+(1<<(j-1))<=N?Sol[j-1][i+(1<<(j-1))]:100001));
    for(i=1; i<=M; ++i){
        int a, b, k;
        fin>>a>>b;
        k=log2(b-a+1);
        fout<<min(Sol[k][a], Sol[k][b-(1<<k)+1])<<"\n";
    }
    return 0;
}