Cod sursa(job #2579784)

Utilizator MihclerioVladimir Chim Mihclerio Data 12 martie 2020 19:53:53
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>

const int nmax=1e5+3;
const int inf=2e9+3;

using namespace std;

int dp[nmax][25];

int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    freopen("rmq.in","r",stdin);
    freopen("rmq.out","w",stdout);

    int n,m;
    cin>>n>>m;
    int a[n+3];
    for(int i=1;i<=n;i++) cin>>a[i],dp[i][0]=a[i];

    for(int i=n;i>=1;i--)
    for(int j=0;i+(1<<j)<=n;j++)
    dp[i][j+1]=min(dp[i][j],dp[i+(1<<j)][j]);

    while(m--)
    {
      int a,b;
      cin>>a>>b;
      int lg=log2(b-a+1);
      cout<<min(dp[a][lg],dp[b-(1<<lg)+1][lg])<<"\n";
    }

}