Pagini recente » Cod sursa (job #111763) | Cod sursa (job #2296753) | Cod sursa (job #1220980) | Cod sursa (job #1932) | Cod sursa (job #184292)
Cod sursa(job #184292)
#include <stdio.h>
#define MAXN 100000
#define MAXL 16
long n,m,i,j,a,b;
long rmq[MAXL][MAXN];
int lg[MAXN];
inline long min(long a,long b)
{
if(a<b) return a;
return b;
}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d %d",&n,&m);
lg[1]=0;
for (i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
for (i=1;i<=n;i++)
scanf("%d\n",&rmq[0][i]);
for (j=1;j<=lg[n];j++)
for (i=1;i+1<<j-1<=n;i++)
rmq[j][i]=min(rmq[j-1][i],rmq[j-1][i+(1<<(j-1))]);
for (i=1;i<=m;i++)
{
scanf("%d %d\n",&a,&b);
printf("%d\n",min(rmq[lg[b-a+1]][a],rmq[lg[b-a+1]][b-(1<<lg[b-a+1])+1]));
}
return 0;
}