Cod sursa(job #1245454)

Utilizator refugiatBoni Daniel Stefan refugiat Data 19 octombrie 2014 11:54:22
Problema Range minimum query Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <fstream>
#define NMax 100001
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, m, rm[16][NMax], lg, st, dr, i, j;
int main()
{
    f>>n>>m;
    for (i=1; i<=n; i++)
        f>>rm[0][i];
    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][dr+1-(1<<lg)])<<endl;
    }
    return 0;
}