Pagini recente » Cod sursa (job #955048) | Cod sursa (job #1207973) | Cod sursa (job #1133779) | Cod sursa (job #1160019) | Cod sursa (job #408543)
Cod sursa(job #408543)
#include<stdio.h>
#define Nmax 100100
long log[Nmax];
long n,m,vec[Nmax],x,y;
long mat[Nmax][20];
int min(long a,long b)
{
if(a<b)
return a;
else
return b;
}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%ld %ld",&n,&m);
int i=0,j=0;
log[0]=-1;
for(i=1;i<=n;i++)
{
scanf("%ld",&vec[i]);
mat[i][0]=vec[i];
log[i]=log[i/2]+1;
}
for(j=1;j<=log[n];j++)
for(i=1;i+(1<<(j-1))<=n;i++)
mat[i][j]=min(mat[i][j-1],mat[i+(1<<(j-1))][j-1]);
int k;
for(i=1;i<=m;i++)
{
scanf("%ld %ld",&x,&y);
k=log[y-x+1];
printf("%ld\n",min(mat[x][k],mat[y-(1<<k)+1][k]));
}
return 0;
}