Cod sursa(job #2690032)

Utilizator driver71528@gmail.comTerec Andrei-Sorin [email protected] Data 22 decembrie 2020 20:10:25
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.6 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("rmq.in");
ofstream g("rmq.out");

int n,m;
int x[17][100001];
int query(int a,int b)
{
    int p = 31 - __builtin_clz(b-a+1);
    return min(x[p][a],x[p][b-(1<<p)+1]);
}
int main()
{
    f>>n>>m;
    for(int i=1;i<=n;i++)
        f>>x[0][i];

    for(int j=1;j<=16;j++)
        for(int i=1;i<=n-(1<<j)+1;i++)
            x[j][i]=min(x[j-1][i],x[j-1][i+(1<<(j-1))]);
    int a,b;

    for(int k=1;k<=m;k++)
    {
        f>>a>>b;
        g<<query(a,b)<<'\n';
    }

    f.close();
    g.close();
    return 0;
}