Cod sursa(job #2187644)

Utilizator alexilasiAlex Ilasi alexilasi Data 26 martie 2018 17:37:03
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("rmq.in");
ofstream fout("rmq.out");

int n,m,i,j,k,x,y;

int a[100010];
int dp[100010][20];

int main()
{
    fin>>n>>m;
    for(i=1;i<=n;i++)fin>>a[i];
    for(i=1;i<=n;i++)dp[i][0]=a[i];
    for(k=1;1<<k<=n;k++)
    {
        j=1<<k;
        for(i=1;i<=n-j+1;i++)
            dp[i][k]=min(dp[i][k-1],dp[i+j/2][k-1]);
    }
    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        j=y-x+1;
        k=-1;
        while(j){k++;j/=2;}
        fout<<min(dp[x][k],dp[y-(1<<k)+1][k])<<'\n';
    }
    return 0;
}