Cod sursa(job #156813)

Utilizator razvi9Jurca Razvan razvi9 Data 12 martie 2008 19:13:22
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<cstdio>
using namespace std;
int a[30][100001],i,j,x,y,n,m;
int min(int a,int b){
	if(a<b) return a;
	return b;}
int main()
{
	freopen("rmq.in","r",stdin);
	freopen("rmq.out","w",stdout);
	scanf("%d %d",&n,&m);
	for(i=1;i<=n;i++)
		scanf("%d",&a[0][i]);
	for(i=1;(1<<i)<=n;i++)	
		for(j=1;j<=n-(1<<i)+1;j++)
			a[i][j]=min(a[i-1][j],a[i-1][j+(1 << (i-1) )]);
	for(;m;--m){
		scanf("%d %d",&i,&j);
		x=(j-i);
		x=x<<1;
		x=x>>1;
		y=1;while(x>>y) y++;
		y--;
		printf("%d\n",min(a[y][i],a[y][j-x+1]));}
	fclose(stdout);
	return 0;
}