Cod sursa(job #2543762)

Utilizator Gabi1623Ghita Gabriel Gabi1623 Data 11 februarie 2020 15:01:39
Problema Range minimum query Scor 0
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 n,m,p,k,i,d[20][1000001],l[10000],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(int i=2;i<=n;i++)
    {
       l[i]=1+l[i/2];
    }
    for(i=1;i<=m;i++)
    {
        fin>>x>>y;

        fout<<min(d[l][x],d[k2][y-p+1])<<endl;


    }



        return 0;
}