Cod sursa(job #2540294)

Utilizator Theo20067Cismaru Theodor-Alexe Theo20067 Data 6 februarie 2020 22:40:15
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#include <algorithm>
#define BAZA 256
using namespace std;
ifstream fin ("rmq.in");
ofstream fout("rmq.out");
int V[100010];
int D[17][100010];
int e,i,j,n,q,st,dr;
int main ()
{
    fin>>n>>q;
    for(i=1;i<=n;i++)
        fin>>D[0][i];
    for(e=1;(1<<e)<=n;e++)
    {
        for(i=1;i<=n;i++)
        {
            D[e][i]=D[e-1][i];
            j=i+(1<<(e-1));
            if(j<=n&&D[e-1][j]<D[e][i])
                D[e][i]=D[e-1][j];
        }
    }
    V[1]=0;
    for(i=2;i<=n;i++)
        V[i]=V[i/2]+1;
    for(i=1;i<=q;i++)
    {
        fin>>st>>dr;
        e=V[dr-st+1];
        fout<<min(D[e][st],D[e][dr-(1<<e)+1] )<<"\n";
    }

    return 0;
}