Cod sursa(job #2528032)

Utilizator xXoctavianXxStanescu Matei Octavian xXoctavianXx Data 21 ianuarie 2020 12:41:44
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.47 kb
#include <fstream>
#include <cmath>

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

int rmq[200003][19];
int n,m,a,b;


int main() 
{
	fin>>n>>m;
	for(int i=1; i<=n; i++)
	{
		fin>>rmq[i][0];
	}
	for(int j=1; j<=18; j++)
	{
		for(int i=1; i<=n-(1<<j)+1; i++)
		{
			rmq[i][j]=min(rmq[i][j-1], rmq[i+(1<<(j-1))][j-1]);
		}
	}
	for(int i=1; i<=m; i++)
	{
		fin>>a>>b;
		int p=0;
		int k=log2(b-a+1);
		fout<<min(rmq[a][k], rmq[b-(1<<k)+1][k])<<"\n";
	}
}