Cod sursa(job #1822894)

Utilizator PaterucAPetruc Andrei Stefan PaterucA Data 5 decembrie 2016 18:50:26
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <fstream>

using namespace std;

ifstream f("rmq.in");
ofstream g("rmq.out");

const int N=(1<<17);
int r[17][N], n, m, i, j, x, y, k;

int main()
{
    f>>n>>m;

    for(i=1; i<=n; i++)
        f>>r[0][i];

    for(i=1, x=1, y=2; y<=n; i++, x<<=1, y<<=1)
        for(j=1, k=y; k<=n; j++, k++)
            r[i][j]=min(r[i-1][j], r[i-1][j+x]);

    for(;m;m--)
    {
        f>>x>>y;
        i=31-__builtin_clz(y-x+1);
        g<<min(r[i][x], r[i][y-(1<<i)+1])<<'\n';
    }

    return 0;
}