Pagini recente » Cod sursa (job #3265972) | Cod sursa (job #3254775) | Cod sursa (job #2457342) | Cod sursa (job #2986657) | Cod sursa (job #1252805)
#include<cstdio>
#include<algorithm>
using namespace std;
#define nmax 100006
#define logmax 20
int rmq[logmax][nmax],n,m,i,k,u,j;
int a[nmax];
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1; i<=n; ++i)
scanf("%d",&rmq[0][i]);
a[1]=0;
for (i=2; i<=n; ++i) a[i]=a[i/2]+1;
for (i=1; (1<<i)<=n; ++i)
for (j=1; j<=n-(1<<i)+1; ++j)
{
int pr=1<<(i-1);
rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+pr]);
}
int x,y;
while (m--)
{
scanf("%d%d",&x,&y);
int dif=y-x+1;
int pr=a[dif];
int unde=dif-(1<<pr);
printf("%d\n",min(rmq[pr][x],rmq[pr][x+unde]));
}
return 0;
}