Cod sursa(job #3218910)

Utilizator buk07Dasu Andrei buk07 Data 28 martie 2024 15:12:57
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <bits/stdc++.h>
using namespace std;
#define FAST ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0) ;
#define ll long long
ifstream fin("rmq.in") ;
ofstream fout("rmq.out") ;
const int NMAX=1e5+5 ;
int n,dp[16][NMAX],q ;
inline int f(int val)
{
    return 1<<val ;
}
int main()
{
    fin>>n>>q ;
    for(int i=1; i<=n; ++i) fin>>dp[0][i] ;
    for(int i=1; i<17; ++i)
        for(int j=1; j<=n-(1<<i)+1; ++j) dp[i][j]=min(dp[i-1][j],dp[i-1][j+f(i-1)]) ;
    while(q--)
    {
        int x,y,l ;
        fin>>x>>y ;
        l=log2(y-x+1) ;
        fout<<min(dp[l][x],dp[l][y-(1<<(l-1))+1])<<'\n' ;
    }
    return 0;
}