Cod sursa(job #2785254)

Utilizator mateitudordmDumitru Matei mateitudordm Data 18 octombrie 2021 12:27:56
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.56 kb
#include <fstream>
#include <cmath>
using namespace std;

int mq[17][100001];

int main()
{
    ifstream cin("rmq.in");
    ofstream cout("rmq.out");
    int n,m,i,j,a,b,x,dif;
    cin>>n>>m;
    for(i=1;i<=n;i++)
        cin>>mq[0][i];
    for(i=1;(1<<i)<=n;i++)
    {
       for(j=1;j<=n;j++)
       {
           mq[i][j]=min(mq[i-1][j],mq[i-1][j+(1<<(i - 1))]);
       }
    }
    for(i=1;i<=m;i++)
    {
        cin>>a>>b;
        dif=b-a+1;
        x=log2(dif);
        cout<<min(mq[x][a],mq[x][b-(1<<x)+1])<<'\n';
    }
    return 0;
}