Cod sursa(job #2572146)

Utilizator CarlaDianaCarla Diana CarlaDiana Data 5 martie 2020 11:53:48
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
int n,m,ma[100000][20],nto,j,maxx,a,b;

int minnim(int st,int dr)
{
    int dif=dr-st;
    int k=log2(dif);
    return(min(ma[st][k],ma[dr-(1<<k)+1][k]));
}


int main()
{
    fin>>n>>m;
    for(int i=1;i<=n;i++)
        fin>>ma[i][0];

    for(j=1;(1<<j)<=n;j++)
    {
        for(int i=1;i<=n-(1<<j)+1;i++)
        {
            ma[i][j]=min(ma[i][j-1],ma[i+((1<<(j-1)))][j-1]);
        }
    }
    maxx=j-1;
    for(;m;m--)
    {
        fin>>a>>b;
        if(a>b) swap(a,b);
        fout<<minnim(a,b)<<" ";
    }

    return 0;
}