Cod sursa(job #1245440)

Utilizator refugiatBoni Daniel Stefan refugiat Data 19 octombrie 2014 11:31:50
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <fstream>
#define NMax 100001
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, m, v[NMax], powt[20], rm[16][NMax], 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=1; 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;
}