Pagini recente » Cod sursa (job #1190339) | Cod sursa (job #3212618) | Cod sursa (job #2216352) | Cod sursa (job #1883771) | Cod sursa (job #1888697)
#include <cstdio>
#include <algorithm>
using namespace std;
int n,m,i,j,k,p,x,y,lg,cate,a[100001],b[100001][20];
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",&a[i]);
b[1][i]=a[i];
}
lg=2;
for(i=2;i<20;i++)
{
for(j=1;j<=n;j++)
b[i][j]=min(b[i-1][j],b[i-1][j+lg/2]);
lg*=2;
}
/*for(i=1;i<20;i++,printf("\n"))
for(j=1;j<=n;j++)
printf("%d ",b[i][j]);*/
while(m)
{
scanf("%d%d",&x,&y);
cate=y+1-x;
p=0;
k=1;
while(k<=cate)
{
p++;
k*=2;
}
//if(k>cate)
k/=2;
printf("%d\n",min(b[p][x],b[p][y-k+1]));
m--;
}
return 0;
}