Pagini recente » Cod sursa (job #861728) | Cod sursa (job #2504296) | Cod sursa (job #441057) | Cod sursa (job #1816614) | Cod sursa (job #201283)
Cod sursa(job #201283)
#include<stdio.h>
#include<algorithm>
using namespace std;
#define L 20
#define N 100005
int n,m,x,y;
int a[L][N];
int lg[N];
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d",&n,&m);
int i,j,aux,aux1;
for(i=1; i<=n; i++)
scanf("%d",&a[0][i]);
for(i=2; i<=n; i++)
lg[i]=lg[i>>1]+1;
for(i=1; i<=lg[n]; i++)
{
aux=n-(1<<i)+1;
aux1=1<<(i-1);
for(j=1; j<=aux; j++)
a[i][j]=min(a[i-1][j],a[i-1][j+aux1]);
}
int log,dif;
for(i=0; i<m; i++)
{
scanf("%d%d",&x,&y);
dif=y-x+1;
log=lg[dif];
printf("%d\n",min(a[log][x],a[log][x+dif-(1<<log)]));
}
return 0;
}