Pagini recente » Cod sursa (job #616754) | Cod sursa (job #36678) | Cod sursa (job #18839) | Cod sursa (job #1930803) | Cod sursa (job #252004)
Cod sursa(job #252004)
#include<cstdio>
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
int i,j,n,t,p,u;
int m[17][100001];
scanf("%d%d",&n,&t);
for(i=0;i<n;++i)
scanf("%d",&m[0][i]);
for(j=1; (1<<j)<=n; ++j)
for(i=0; i + (1<<j) -1 < n; ++i)
if(m[j-1][i]<m[j-1][i+(1<<(j-1))])
m[j][i]=m[j-1][i];
else
m[j][i]=m[j-1][i+(1<<(j-1))];
while(t--)
{
scanf("%d%d",&p,&u);
--p; --u;
i=u-p+1;
j=0;
while(i){ ++j; i>>=1; }
--j;
if(m[j][p]<m[j][u-(1<<j)+1])
printf("%d\n",m[j][p]);
else
printf("%d\n",m[j][u-(1<<j)+1]);
}
return 0;
}