Cod sursa(job #1042899)

Utilizator dan.ghitaDan Ghita dan.ghita Data 27 noiembrie 2013 19:38:19
Problema Range minimum query Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.49 kb
#include <fstream>
#include <cmath>
#include <iostream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, m, a[20][100002], p, x, y;


int main()
{
    f>>n>>m;
    for(int i=1; i<=n; ++i) f>>a[0][i];

    for(int i=n; i>0; --i)
        for(int k=1; (1<<k)<=n; ++k)
            a[k][i]=min(a[k-1][i], a[k-1][i+(1<<(k-1))]);

    while(m--){
        f>>x>>y;
        p=(int)log2(y-x);
        g<<min(a[p][x], a[p][y-p])<<'\n';

    }
    return 0;
}