Pagini recente » Cod sursa (job #168031) | Cod sursa (job #282656) | Cod sursa (job #1771873) | Cod sursa (job #1384857) | Cod sursa (job #1728211)
#include <cstdio>
#include <algorithm>
using namespace std;
int rmq[100010][20],logg[100010];
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
int n,m,l,r,a,b;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&rmq[i][0]);
logg[1]=0;
for(int i=2;i<=n;i++)
logg[i]=logg[i/2]+1;
for(int i=1;i<=logg[n];i++)
for(int j=1;j+(1<<i)<=n+1;j++)
{
rmq[j][i]=min(rmq[j][i-1],rmq[j+(1<<(i-1))][i-1]);
}
for(int i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
l=logg[b-a+1];
r=min(rmq[a][l],rmq[b-(1<<l)+1][l]);
printf("%d\n",r);
}
return 0;
}