Cod sursa(job #2788109)

Utilizator ValiAntonieAntonie Valentin ValiAntonie Data 24 octombrie 2021 22:57:57
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.58 kb
#include <bits/stdc++.h>

using namespace std;

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

int A[100001][18],i,k,x,st,dr,n,m,lungime,nr;

int main()
{
fin>>n>>m;
for(i=0;i<n;i++){
    fin>>x;
    A[i][0] = x;
}
for(k=1;k<=18;k++){
    for(i=0;i+(1 << k)<= n ;i++){
        A[i][k] = min(A[i][k-1],A[i+(1<<(k-1))][k-1]);
    }
}
for(i=1;i<=m;i++){
    fin>>st>>dr;
    st--;
    dr--;
    lungime = dr - st + 1;
    k = 0;
    while(1<< k <= lungime){
        k++;
    }
    fout << min(A[st][k-1],A[dr-(1<<(k-1))+1][k-1]) << '\n';
}
    return 0;
}