Cod sursa(job #1141121)

Utilizator NistorSergiuNistor Sergiu NistorSergiu Data 12 martie 2014 17:16:56
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include<fstream>
using namespace std;
int sir[100001][20];
int main()
{
	int n,m;
	int i,j,ii;
	int lim,p;
	ifstream f("rmq.in");
	f>>n>>m;
	for(i=1;i<=n;i++)
		f>>sir[i][0];
	for(j=1;(1<<j)<=n;j++)
		for(i=1;(i+(1<<j)-1)<=n;i++)
			sir[i][j]=min(sir[i][j-1],sir[i+(1<<(j-1))][j-1]);
	ofstream g("rmq.out");
	for(ii=1;ii<=m;ii++)
	{
		f>>i>>j;
		lim=j-i+1;
		for(p=0;(1<<p)<=lim;p++);
		p--;
		g<<min(sir[i][p],sir[j-(1<<p)+1][p])<<'\n';
	}
	f.close();
	g.close();
	return 0;
}