Pagini recente » Cod sursa (job #2666723) | Cod sursa (job #214267) | Cod sursa (job #1747521) | Cod sursa (job #1674248) | Cod sursa (job #307019)
Cod sursa(job #307019)
#include<stdio.h>
#include<stdlib.h>
#define MAXN 100001
#define MAXLOG 17
int a[MAXN],mk[MAXLOG][MAXN];
int main() {
int n,m,i,j,k,x,y;
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=0;i<n;i++) {
scanf("%d",a+i);
mk[0][i]=a[i];
}
for(j=1;(1<<j)<=n;j++)
for(i=0;i+(1<<j)<=n;i++)
if(mk[j-1][i]<mk[j-1][1<<(j-1)+i]) mk[j][i]=mk[j-1][i];
else mk[j][i]=mk[j-1][1<<(j-1)+i];
for(i=0;i<m;i++) {
scanf("%d%d",&x,&y);
x--;
y--;
for(k=0;(1<<(k+1))<=(y-x+1);k++);
if(mk[k][x]<mk[k][y-(1<<k)+1]) printf("%d\n",mk[k][x]);
else printf("%d\n",mk[k][y-(1<<k)+1]);
}
fclose(stdout);
return 0;
}