Cod sursa(job #2270435)

Utilizator Andrei4000Stefan Andrei Andrei4000 Data 27 octombrie 2018 11:03:57
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>

using namespace std;

#define NR 100001

int r[18][NR],log[NR];

int main()
{
    int m,n,y,l,rez,i,jj,j,a,b;


    ifstream f("rmq.in");
    f>>n>>m;
    for(i=1; i<=n; i++)
        f>>r[0][i];


    log[1]=0;
    for(i=2; i<=n; i++)
    {
        log[i]=1+log[i/2];
    }



    for(i=1; (1<<i)<=n; i++)
    {
        for(j=(1<<i); j<=n; j++)
        {
            r[i][j]=min(r[i-1][j-(1<<(i-1))], r[i-1][j]);
        }

    }


    ofstream g ("rmq.out");



    for(i=1; i<=m; i++)
    {
        f>>a;

        f>>b;
        l=log[b-a+1];
        rez=min(r[l][a+(1<<l)-1],r[l][b]);

        g<<rez<<"\n";
    }

    g.close();


    return 0;
}