Cod sursa(job #2132687)

Utilizator alexandra_paticaAndreea Alexandra Patica alexandra_patica Data 15 februarie 2018 23:08:42
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int n, m, a, b, x, Arb[200100];

int main ()
{
    freopen("rmq.in", "r", stdin);
    freopen("rmq.out", "w", stdout);

    scanf("%d%d", &n, &m);

    for (int i=1; i<=n; i++)
        scanf("%d", &Arb[i+n]);

    for (int i=n-1; i>0; i--)
        Arb[i]=min(Arb[2*i], Arb[2*i+1]);

    for (int i=1; i<=m; i++){
        scanf("%d%d", &a, &b);
        a+=n;
        b+=n;
        x=999999999;
        while (a<=b){
            x=min(x, min(Arb[a], Arb[b]));
            a=(a+1)/2;
            b=(b-1)/2;
        }
        printf("%d\n", x);
    }
    return 0;
}