Pagini recente » Cod sursa (job #1521214) | Cod sursa (job #2360944) | Cod sursa (job #2361164) | Cod sursa (job #1520593) | Cod sursa (job #331845)
Cod sursa(job #331845)
#include<stdio.h>
#include<math.h>
#define nmax 100010
long a[20][nmax],n,m;
void read()
{
scanf("%ld%ld",&n,&m);
long i;
for (i=1;i<=n;i++)
scanf("%ld",&a[0][i]);
}
long min(long a,long b)
{
if (a<b)
return a;
return b;
}
void pre()
{
long i,lim,j;
lim=log2(n);
for (i=1;i<=lim;i++)
{
for (j=1;j+(1<<i)-1<=n;j++)
a[i][j]=min(a[i-1][j],a[i-1][j+(1<<(i-1))]);
}
}
void rez()
{
long i,x,y,k,r;
for (i=1;i<=m;i++)
{
scanf("%ld%ld",&x,&y);
k=log2(y-x+1);
r=min(a[k][x],a[k][y+1-(1<<k)]);
printf("%ld\n",r);
}
}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
read();
pre();
rez();
return 0;
}