Cod sursa(job #1245464)

Utilizator refugiatBoni Daniel Stefan refugiat Data 19 octombrie 2014 12:04:02
Problema Range minimum query Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <fstream>
#define NMax 100001
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, m, rm[16][NMax], v[NMax], powt[20], lg, st, dr, i, j;
int main()
{
    f>>n>>m;
    for (i=1; i<=n; i++)
        f>>rm[0][i];
    lg=i-1;
    for(i=1;(1<<i)<n;++i)
        for(j=1;j<=n-(1<<i)+1;++j)
            rm[i][j]=min(rm[i-1][j],rm[i-1][j+(1<<(i-1))]);
    for(i=0;i<m;++i) {
        f>>st>>dr;
        for(j=1;(1<<j)<=dr-st+1;++j);
        lg=j-1;
        g<<min(rm[lg][st],rm[lg][st+(dr-st+1)-(1<<lg)])<<"\n";
    }
    return 0;
}