Pagini recente » Cod sursa (job #2223764) | Cod sursa (job #58745) | Cod sursa (job #2009183) | Cod sursa (job #1986031) | Cod sursa (job #156722)
Cod sursa(job #156722)
#include <stdio.h>
long rmq[18][101],n,m,x,y,lg[100001],d;
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%ld %ld\n",&n,&m);
lg[1]=0;
long i,j;
for (i=1;i<=n;i++)
{
scanf("%ld\n",&rmq[0][i]);
if (i>1)
lg[i]=lg[i/2]+1;
}
for (i=1;(1<<i)<=n;i++)
for (j=1;j<=n-(1<<i)+1;j++)
rmq[i][j]=rmq[i-1][j]<rmq[i-1][j+(1<<(i-1))] ? rmq[i-1][j] : rmq[i-1][j+(1<<(i-1))];
for (i=0;i<m;i++)
{
scanf("%ld %ld\n",&x,&y);
d=y-x+1;
printf("%ld\n",rmq[lg[d]][x]<rmq[lg[d]][y-(1<<lg[d])+1] ? rmq[lg[d]][x] : rmq[lg[d]][y-(1<<lg[d])+1]);
}
return 0;
}