Pagini recente » Cod sursa (job #1259668) | Cod sursa (job #207055) | Cod sursa (job #2636735) | Cod sursa (job #2795500) | Cod sursa (job #932949)
Cod sursa(job #932949)
#include<cstdio>
int m,n,i,j,x,y,k,ln[20],v[100013],rmq[20][100013];
inline int min(const int &a, const int &b)
{
return(a<b?a:b);
}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=0;i<n;++i)
{
scanf("%d",&v[i]);
rmq[0][i]=v[i];
}
for(ln[1]=0,i=2;i<=n;++i)ln[i]=ln[i/2]+1;
for(i=1;(1<<i)<=n;++i)
for(j=0;j<=n-(1<<i);++j)
rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+(1<<(i-1))]);
for(i=0;i<m;++i)
{
scanf("%d%d",&x,&y);
--x;--y;
y-=(x-1);
k=ln[y];
y-=(1<<k);
printf("%d\n",min(rmq[k][x],rmq[k][x+y]));
}
return 0;
}