Cod sursa(job #2435348)

Utilizator DavidAA007Apostol David DavidAA007 Data 3 iulie 2019 18:20:30
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.5 kb
#include<fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int i,j,p,l,k,r,rmq[20][100010],n,m,lg[100010];
int main()
{
	fin>>n>>m;
	for(int i=0;i<n;i++)
        fin>>rmq[0][i];
	lg[1]=0;
	for(i=2;i<=n;i++)
		lg[i]=lg[i/2]+1;
	for(i=1;(1<<i)<=n;i++)
		for(j=0;j<=n-(1<<i);j++)
			rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+(1<<(i-1))]);
	for(p=1;p<=m;p++)
	{
		fin>>i>>j;
		i--;
        j--;
		l=j-i+1;
		k=lg[l];
		r=min(rmq[k][i],rmq[k][j-(1<<k)+1]);
		fout<<r<<"\n";
	}
	return 0;
}