Cod sursa(job #3253775)

Utilizator luca._.solosluca solos luca._.solos Data 4 noiembrie 2024 19:27:33
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <bits/stdc++.h>

using namespace std;

const int nmax=1e5+3, lg=23;
int sparse[nmax][lg], v[nmax], bustean[nmax];

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0);

    int n, q, a, b;
    cin>>n>>q;
    for(int i=1; i<=n; i++)
    {
        cin>>v[i];
        sparse[i][0]=v[i];
    }
    for(int i=1; i<lg-2; i++)
    {
        for(int j=1; j<=n-(1<<i-1)+1; j++)
        {
            sparse[j][i]=min(sparse[j][i-1], sparse[j+(1<<(i-1))][i-1]);
        }
    }
    for(int i=2; i<=n; i++)
    {
        bustean[i]=bustean[i/2]+1;
    }

    while(q--)
    {
        cin>>a>>b;
        int x=bustean[b-a];
        cout<<min(sparse[a][x], sparse[b-(1<<x)+1][x])<<'\n';
    }

    return 0;
}