Pagini recente » Cod sursa (job #1824875) | Cod sursa (job #3155326) | Cod sursa (job #2543997) | Cod sursa (job #2877395) | Cod sursa (job #615224)
Cod sursa(job #615224)
#include<cstdio>
#define NMAX 100005
#define sh short int
#define minn(a,b) ((a<b)?a:b)
sh log[NMAX];
int a[18][NMAX],lung,jum,x,y,N,M,lo;
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d",&N,&M);
for (int i=1; i<=N; ++i)
{
scanf("%d",&a[0][i]);
if (i>1)
log[i]=log[i>>1]+1;
}
for (int i=1; i<=log[N]; ++i)
{
lung=(1<<i);
jum=lung>>1;
for (int j=1; j+lung-1<=N; ++j)
a[i][j]=minn(a[i-1][j],a[i-1][j+jum]);
}
for (int i=1; i<=M; ++i)
{
scanf("%d%d",&x,&y);
lung=1<<log[y-x+1];
lo=log[lung];
printf("%d\n",minn(a[lo][x],a[lo][y-lung+1]));
}
return 0;
}