Mai intai trebuie sa te autentifici.

Cod sursa(job #155007)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 11 martie 2008 17:30:12
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<stdio.h>
long n,m,i,a[17][100001],ll[100001],l,t,j,x,y,m1,m2;
int main()
{	FILE *f=fopen("rmq.in","r"),
	     *g=fopen("rmq.out","w");
	fscanf(f,"%ld%ld",&n,&m);
	for(i=1;i<=n;i++) fscanf(f,"%ld",&a[0][i]);
	l=2;
	while(l<=n)
	{ j++;  ll[l]=1;
	  for(i=1;i<=n-l+1;i++) a[j][i]=(a[j-1][i]<a[j-1][i+(l>>1)])?a[j-1][i]:a[j-1][i+(l>>1)];
	  l<<=1;
	 }
	for(i=1;i<=n;i++) ll[i]+=ll[i-1];
	for(t=1;t<=m;t++)
	{  fscanf(f,"%ld%ld",&x,&y);
	   i=ll[y-x+1]; l=1<<i;
	   m1=a[i][x]; m2=a[i][y-l+1];
	   m1=(m1<m2)?m1:m2;
	   fprintf(g,"%ld\n",m1);
	}

	fcloseall();
	return 0;
}