Pagini recente » Cod sursa (job #2430638) | Cod sursa (job #2137195) | Cod sursa (job #440051) | Cod sursa (job #436852) | Cod sursa (job #1011661)
#include <stdio.h>
#define fr(i,a,b) for(int i=a;i<=b;++i)
#define N 100002
#define ll long int
ll n,m;
ll rmq[18][N];
ll lg[N];
ll t[N];
long int MIN(ll a,ll b)
{
return a<b?a:b;
}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
ll l;
scanf("%ld %ld",&n,&m);
fr(i,1,n) scanf("%ld\n",&t[i]);
lg[1]=0;
fr(i,2,n) lg[i]=lg[i/2]+1;
fr(i,1,n) rmq[0][i]=t[i];
fr(i,1,(1<<i))
fr(j,1,n-(1<<i)+1)
{
l=1<<(i-1);
rmq[i][j]=MIN(rmq[i-1][j],rmq[i-1][j+1]);
}
ll x,y,dif,s;
fr(i,1,m)
{
scanf("%ld %ld",&x,&y);
dif=y-x+1;
l=lg[dif];
s=dif-(1<<l);
printf("%ld\n",MIN(rmq[l][x],rmq[l][x+s]));
}
}