Cod sursa(job #2887993)

Utilizator 7h35up3rPr0Sus Amogus 7h35up3rPr0 Data 10 aprilie 2022 15:54:51
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>

using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
int rmq[1000001][20],n,m,x,y;
int main()
{
    fin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        fin>>rmq[i][0];
    }
    for(int exp=1,lg=2;lg<=n;exp++,lg*=2)
    {
        for(int i=1;i+lg-1<=n;i++)
            rmq[i][exp]=min(rmq[i][exp-1],rmq[i+lg/2][exp-1]);
    }
    for(int i=1;i<=m;i++)
    {
        fin>>x>>y;
        int pmax=1,pw=0;
        while(pmax<=y-x+1)
        {
            pmax*=2;
            pw++;
        }
        pw--;
        fout<<min(rmq[x][pw],rmq[y-(1<<pw)+1][pw])<<'\n';
    }
    fin.close();
    fout.close();
    return 0;
}