Cod sursa(job #2543759)

Utilizator Gabi1623Ghita Gabriel Gabi1623 Data 11 februarie 2020 14:58:31
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>

using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
 int n,m,p,k,i,d[20][1000001],j,x,y,k2;
int main()
{
    fin>>n;
    fin>>m;
    for(i=1; i<=n; i++)
        fin>>d[0][i];
    p=2;
    k=0;

    while(p<=n)
    {
        k++;
        for(i=1; i<=n; i++) {
            d[k][i]=d[k-1][i];
            if (d[k-1][i+p/2] < d[k][i]&&i+p/2<=n)
                d[k][i]=d[k-1][i+p/2];
        }
        p*=2;
    }
    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        p=1;
        k2=0;
        while(2*p<=x-y+1)
        {
            k2++;
            p*=2;
        }
        fout<<min(d[k2][x],d[k2][y-p+1])<<endl;


    }



        return 0;
}