Cod sursa(job #2528031)

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


ifstream cin("rmq.in");
ofstream cout("rmq.out");

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

using namespace std;
int main() 
{
	cin>>n>>m;
	for(int i=1; i<=n; i++)
	{
		cin>>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++)
	{
		cin>>a>>b;
		int p=0;
		int k=log2(b-a+1);
		cout<<min(rmq[a][k], rmq[b-(1<<k)+1][k])<<"\n";
	}
}