Cod sursa(job #2450241)

Utilizator eduardmirceabraguta eduard eduardmircea Data 22 august 2019 13:34:09
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n,i,j,m[30][100010],a[100010],c,x,y,k,log2[100010],l,r;

int main() {

    in>>n;
    in>>c;

    log2[1]=0;
    for(int i=2; i<=n; i++) {
        log2[i]=1+log2[i/2];
    }

    for(i=1; i<=n; i++) {
        in>>a[i];
    }

    for(i=1; i<=n; i++)
        m[0][i]=a[i];

    for (j = 1; (1 << j) <= n; j++)
        for (i = 1; i + (1 << j) - 1 <= n; i++)
            m[j][i] = min(m[j - 1][i], m[j - 1][i + (1 << (j - 1))]);


    for(i=1; i<=c; i++) {
        in>>l>>r;
        k=r-l+1;
        k=log2[k];
        out<<min(m[k][l],m[k][r-(1<<k)+1])<<"\n";;

    }


    return 0;

}