Cod sursa(job #2592971)

Utilizator georgecristian2002Raducanu George-Cristian georgecristian2002 Data 2 aprilie 2020 17:45:44
Problema Plantatie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<fstream>

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

const int Nmax=100002;
const int Lmax=19;
int  rmq[Lmax][Nmax],m,n,lg[Nmax];

inline int mini(int a, int b)
{
    if(a<b)
        return a;
    else return b;
}

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

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

	for(int i=1;(1<<i)<=n;i++)
    {
        for(int j=1<<i;j<=n;j++)
        {
                  rmq[i][j]=mini(rmq[i-1][j],rmq[i-1][j-(1<<(i-1))]);
        }
    }
	int x,y;
	for (int i=1;i<=m;i++)
	{
		fin>>x>>y;
		l=lg[y-x+1];
		fout<<mini(rmq[l][y],rmq[l][x-1+(1<<l)])<<'\n';
	}
	fin.close();
	fout.close();
	return 0;
}