Cod sursa(job #3344166)

Utilizator IleaIlea Bogdan Ilea Data 1 martie 2026 15:29:06
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include<iostream>
using namespace std;

#define NMAX 100001
#define LGMAX 17

int n,rmq[LGMAX][NMAX],_lg2[NMAX];
signed main(){
#ifndef LOCAL
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
#endif // LOCAL
    freopen("rmq.in","r",stdin);
    freopen("rmq.out","w",stdout);
    int q;
    cin>>n>>q;
    _lg2[0]=-1;
    for(int i=1;i<=n;++i){
        cin>>rmq[0][i];
        _lg2[i]=_lg2[i>>1]+1;
    }
    for(int k=1;(1<<k)<=n;++k){
        for(int i=1;i+(1<<k)-1<=n;++i){
            rmq[k][i]=min(
                rmq[k-1][i],
                rmq[k-1][i+(1<<(k-1))]
            );
        }
    }
    for(;q;--q){
        int x,y;
        cin>>x>>y;
        if(x>y)swap(x,y);
        int l=_lg2[y-x+1];
        cout<<min(
            rmq[l][x],
            rmq[l][y-(1<<l)+1]
        )<<"\n";
    }
    return 0;
}