Pagini recente » Cod sursa (job #1728736) | Cod sursa (job #2030593) | Cod sursa (job #534730) | Cod sursa (job #2961156) | Cod sursa (job #1775475)
#include<cstdio>
int r[100001][17];
int log[100001];
int main()
{
int n,m,i,j,a,b,q,l;
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&r[i][0]);
}
for(i=1;i<=n;i++)
{
for(j=1;(1<<j)<=i;j++)
{
if(r[i][j-1]<r[i-(1<<(j-1))][j-1])
r[i][j]=r[i][j-1];
else
r[i][j]=r[i-(1<<(j-1))][j-1];
}
}
log[1]=0;
for(i=2;i<=n;i++)
{
log[i]=1+log[i/2];
}
for(i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
l=log[b-a+1];
if(r[b][l]<r[a+(1<<l)-1][l])
q=r[b][l];
else
q=r[a+(1<<l)-1][l];
printf("%d\n",q);
}
return 0;
}