Cod sursa(job #1198041)

Utilizator lacraruraduRadu Matei Lacraru lacraruradu Data 14 iunie 2014 12:52:52
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>

using namespace std;

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

const int lmax = 100001 , loglmax = 16;

int n , m , r[loglmax][lmax] , lg[lmax];

inline int min(int x, int y)
{
    return x < y ? x : y;
}

int main()
{
    int i , j , a , b , L;

    in >> n >> m;

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

    for(i = 1 ; i < loglmax ; i++)
        for(j = 1 ; j <= n ; j++)
        {
            if((1 << i) > j) continue;

            r[i][j] = min(r[i - 1][j - (1 << (i - 1))] , r[i - 1][j]);
            //out << j - (1 << (i - 1)) << "\n";
        }

    lg[1] = 0;
    for(i = 2 ; i <= n ; i++)
        lg[i] = 1 + lg[i / 2];

    return 0;
    for(i = 1 ; i <= m ; i++)
    {
        in >> a >> b;

        L = lg[b - a + 1];
        out << min(r[L][b] , r[L][a + (1 << L) - 1]) << '\n';
    }
    return 0;
}