Cod sursa(job #3330540)

Utilizator IleaIlea Bogdan Ilea Data 20 decembrie 2025 09:36:06
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
using namespace std;

#define MAX2 20
#define NMAX 100005

int lg2[NMAX],rmq[MAX2][NMAX];
signed main(...){
    // freopen("rmq.in","r",stdin);
    // freopen("rmq.out","w",stdout);
    // ios::sync_with_stdio(false);
    // cin.tie(nullptr);
    // cout.tie(nullptr);
    ifstream cin("rmq.in");
    ofstream cout("rmq.out");
    int n,q;
    cin>>n>>q;
    for(int i=1;i<=n;++i){
        cin>>rmq[0][i];
        if(i>1)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;
        int l=lg2[y-x+1];
        cout<<min(rmq[l][x],rmq[l][y-(1<<l)+1])<<"\n";
    }
    return 0;
}