Cod sursa(job #1824041)

Utilizator stefii_predaStefania Preda stefii_preda Data 7 decembrie 2016 11:03:20
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#include <algorithm>

using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");

const int MAX = 100005;
int lg2[MAX], rmq[MAX][20];


int main()
{
    int n, m;
    in >> n >> m;
    int i, j;
    for(i = 1; i <= n; i++)
        in >> rmq[i][0];
    lg2[1] = 0;
    for(i = 2; i <= n; i++)
        lg2[i] = lg2[i/2] + 1;
    for(j = 1; (1<<j) <= n; j++)
        for(i = 1; i + (1<<j) <= n+1; i++)
            rmq[i][j] = min( rmq[i][j-1], rmq[i + 1<<(j-1)][j-1] );
    int a, b, k;
    for(i = 1; i <= m; i++)
    {
        in >> a >> b;
        k = lg2[b - a + 1];
        out << min(rmq[a][k], rmq[b- (1<<k)+1][k]) << "\n";
    }
    return 0;
}