Cod sursa(job #1377890)

Utilizator maribMarilena Bescuca marib Data 6 martie 2015 09:03:24
Problema Lowest Common Ancestor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#define DIM 100001
#define minim(a, b) ((a<b)?a:b)

using namespace std;

int v[DIM], m[17][DIM], lg[DIM], x, y, q, n, log2;

int main()
{
    ifstream in("rmq.in");
    ofstream out("rmq.out");
    in>>n>>q;
    for(int i=1; i<=n; ++i)
    {
        in>>v[i];
        m[0][i]=v[i];
        if(i>1)
            lg[i]=lg[i/2]+1;
    }
    for(int j=1; (1<<j)<=n; ++j)
    {
        for(int i=1; i+(1<<j)-1<=n; ++i)
        {
            m[j][i]=minim(m[j-1][i], m[j-1][i+(1<<(j-1))]);
        }
    }
    while(q--)
    {
        in>>x>>y;
        log2=lg[y-x+1];
        out<<minim(m[log2][x], m[log2][y+1-(1<<log2)])<<"\n";
    }
    in.close();
    out.close();
    return 0;
}