Pagini recente » Cod sursa (job #502550) | Cod sursa (job #1074046) | Cod sursa (job #2458374) | Cod sursa (job #201236) | Cod sursa (job #385790)
Cod sursa(job #385790)
#include<stdio.h>
int n,m,v[100002],rmq[19][100002],log[100002];
inline int min(int x, int y){return x<y?x:y;}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d",&n,&m);
int i,j,lim,x,y;
for(i=1;i<=n;i++)
scanf("%d",&v[i]),rmq[0][i]=v[i];
for(i=1;i<=n && i<32;i++)
{
lim=n-(1<<i)+1;
for(j=1;j<=lim;j++)
rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+(1<<(i-1))]);
}
for(i=2;i<=n;i++)
log[i]=log[i>>1]+1;
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
printf("%d\n",min(rmq[log[y-x+1]][x],rmq[log[y-x+1]][y+1-(1<<log[y-x+1])]));
}
return 0;
}