Pagini recente » Cod sursa (job #1321327) | Cod sursa (job #834940) | Cod sursa (job #1877773) | Cod sursa (job #2927736) | Cod sursa (job #1109430)
#include<cstdio>
#include<vector>
using namespace std;
#define Nmax 100005
int a[18][Nmax],n,m;
int log(int x)
{
int dk=1,nr=0;
while(dk*2<=x) dk*=2, nr++;
return nr;
}
int main()
{
int i,j,nl,x,y;
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d %d",&n, &m);
for(i=1;i<=n;i++)
scanf("%d",&a[0][i]);
nl=log(n);
for(i=1;i<=nl;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))]);
int delta;
for(i=1;i<=m;i++)
{
scanf("%d %d",&x,&y);
j=log(y-x+1);
delta=(y-x+1)-(1<<j);
printf("%d\n",min(a[j][x],a[j][x+delta]));
}
return 0;
}