Cod sursa(job #2110008)

Utilizator Garen456Paun Tudor Garen456 Data 20 ianuarie 2018 12:01:00
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
#include <math.h>
#define inf 100001
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,l;
int m[100001][18],lg[100001];
int main()
{   fin>>n>>l;
    int i,j,x,y,sol;
    for(i=1;i<=n;++i)
      fin>>m[i][0];

    for(i=2;i<=n;++i)
        lg[i]=lg[i/2]+1;


    for(j=1;(1<<j)<=n;++j)
        for(i=1;i+(1<<j)-1<=n;++i)
        m[i][j]=min(m[i][j-1],m[i+(1<<(j-1))][j-1]);
    for(i=1;i<=l;++i)
    {  fin>>x>>y;
        j=lg[y-x+1];
        sol=inf;
        sol=min(m[x][j],m[y-(1<<j)+1][j]);
        fout<<sol<<"\n";
    }
        return 0;
}