Pagini recente » Cod sursa (job #2967822) | Cod sursa (job #1126982) | Cod sursa (job #389222) | Cod sursa (job #3179415) | Cod sursa (job #1148179)
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int k,x,y,n,m,r[18][100002],i,j,loga[100002];
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&r[0][i]);
}
loga[0]=-1;
for(i=1;i<=n;i++)
{
loga[i]=loga[i/2]+1;
}
for(i=1;i<=loga[n];i++)
{
for(j=1;j<=n-(1<<(i-1));j++)
{
r[i][j]=min(r[i-1][j],r[i-1][j-(1<<(i-1))]);
}
}
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
k=loga[y-x+1];
printf("%d\n",min(r[k][x],r[k][y-(1<<k)+1]));
}
return 0;
}