Cod sursa(job #484285)

Utilizator zloteanu.adrianzloteanu adrian nichita zloteanu.adrian Data 13 septembrie 2010 14:02:20
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include<stdio.h>
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+1;
  y=1;
  while(x>>y)
     y++;
  y--;
  printf("%d\n",min(a[y][i],a[y][j-(1<<y)+1]));}
return 0;}