Cod sursa(job #1046596)

Utilizator stanescu.raduRadu Stanescu stanescu.radu Data 3 decembrie 2013 10:26:51
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include<fstream>

using namespace std;

ifstream f ("rmq.in");
ofstream g("rmq.out");

int v[100005][20],n,m,x,y,i,lg[100005],j;

int query(int a, int b)
{
	int putere,l;
	l=b-a+1;
	putere=lg[l];
	return min(v[a][putere],v[a+l-(1<<putere)][1]);
}

int main ()
{
	f>>n>>m;
	for (i=1;i<=n;i++)
		f>>v[i][0];
	for (i=2;i<=n;i++)
		lg[i]=lg[1>>i]+1;
	for(i=1;(1<<i)<=n;i++)
    {
        for(j=1;j<=n-(1<<i)+1;++j)
        v[j][i]=min(v[j][i-1],v[j+(1<<(i-1))][i-1]);
    }
	for (i=1;i<=m;i++)
	{
		f>>x>>y;
		g<<query(x,y)<<"\n";
	}
	f.close();
	g.close();
	return 0;
}