Cod sursa(job #2130981)

Utilizator aeromaniaXRadoi Iulian aeromaniaX Data 14 februarie 2018 10:06:18
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <bits/stdc++.h>
using namespace std;
int n,m,i,arb[200005],x,a,b;
int main()
{
    freopen("rmq.in","r",stdin);
    freopen("rmq.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=0; i<n; i++)
        scanf("%d",&arb[i+n]);

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

    for(i=1; i<=m; i++)
    {
        scanf("%d%d",&a,&b);
        a+=n;
        b+=n;
        x=200000;
        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;
}