Pagini recente » Cod sursa (job #1827345) | Cod sursa (job #441058) | Cod sursa (job #1624192) | Cod sursa (job #1494964) | Cod sursa (job #361008)
Cod sursa(job #361008)
#include<stdio.h>
inline int Min(int x,int y){return x<y?x:y;}
int n,m,i,A,B,E,L,P,U,M,a[17][100000];
void read(),solve();
int main()
{
read();
solve();
return 0;
}
void read()
{
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]);
}
void solve()
{
L=1;i=0;
for(;;)
{
if(L<<1>n)break;
M=L;L<<=1;P=1;U=L;E++;
for(;U<=n;P++,M++,U++)
a[E][P]=Min(a[E-1][P],a[E-1][M+1]);
}
for(;m;m--)
{
scanf("%d%d",&A,&B);
L=1;
i=0;
for(;;)
{
if((L<<1)>B-A+1)
break;
i++;
L<<=1;
}
printf("%d\n",Min(a[i][A],a[i][B-L+1]));
}
}