Pagini recente » Cod sursa (job #1172175) | Clasament | Cod sursa (job #694828) | Cod sursa (job #2017387) | Cod sursa (job #247714)
Cod sursa(job #247714)
#include <cstdio>
#define l 100010
long a[20][l],v[l],lg[l],n,m,i,j,x,y;
long min(long a, long b)
{
if (a<b) b=a;
return b;
}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%ld %ld",&n,&m);
for (i=1; i<=n; i++) scanf("%ld",&a[0][i]);
for (i=2; i<=n; i++) lg[i]=lg[i/2]+1;
for (i=1; i<=lg[n]; i++)
for (j=1; j-1+(1<<(i))<=n; j++)
a[i][j]=min(a[i-1][j],a[i-1][j+(1<<(i-1))]);
for (i=1; i<=m; i++)
{
scanf("%ld %ld",&x,&y);
n=lg[y-x+1];
printf("%ld\n",min(a[n][x],a[n][y-(1<<n)+1]));
}
}