Cod sursa(job #2485934)

Utilizator Asmarandei_LeonardAsmarandei Leonard Gabriel Asmarandei_Leonard Data 2 noiembrie 2019 10:47:07
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.57 kb
#include <fstream>

using namespace std;

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

int n,t,m[30][100001],l2[100001],x,y,l;

int main()
{
    fin>>n>>t;
    for(int i=1; i<=n; ++i)
        fin>>m[0][i];
    l2[0]=l2[1]=0;
    for(int i=2; i<=n; ++i)
        l2[i]=l2[i>>1]+1;
    for(int i=1; i<=l2[n]; ++i)
        for(int j=1; j+(1<<(i-1))<=n; ++j)
        m[i][j]=min(m[i-1][j],m[i-1][j+(1<<(i-1))]);
    while(t--)
    {
        fin>>x>>y;
        l=l2[y-x+1];
        fout<<min(m[l][x],m[l][y-(1<<l)+1])<<'\n';
    }

    return 0;
}