Cod sursa(job #3298754)

Utilizator Grama2008Grama Andrei Teodor Grama2008 Data 1 iunie 2025 13:05:09
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

const int N=1e5;

const int K=17;

int st[K+1][N+5];

int lg[N+5];

int log2_floor(int i){
    return i ? __builtin_clz(1) - __builtin_clz(i) : -1;
};

int solve(){


}

int main()
{
    freopen("rmq.in", "r", stdin);
    freopen("rmq.out", "w", stdout);
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n,m;
    cin>>n>>m;
    vector<int> v(n);
    for (int i=0;i<n;i++){
        cin>>v[i];
        st[0][i]=v[i];
    }
    for (int i=1;i<=K;i++){
        for (int j=0;j+(1<<i)<=N;j++){
            st[i][j]=min(st[i-1][j], st[i-1][j+(1<<(i-1))]);
        }
    }
    for (int j=0;j<m;j++){
        int x,y;
        cin>>x>>y;
        x--;
        y--;
        int i=log2_floor(y-x+1);
        cout<<min(st[i][x], st[i][y-(1<<i)+1])<<'\n';
    }
    return 0;
}