Pagini recente » Cod sursa (job #1531976) | Cod sursa (job #43855) | Cod sursa (job #1011907) | Cod sursa (job #1112717) | Cod sursa (job #560163)
Cod sursa(job #560163)
#include <stdio.h>
int n,m,x,y,p,n1,i,j,q;
int a[20][100001];
int min(int x,int y) {
if (x<y) return x;
return y;
}
int main () {
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d",&n,&m);
p=0;
n1=n;
while (n1!=1) {
n1/=2;
p++;
}
for (i=1; i<=n; i++) scanf("%d",&a[0][i]);
for (i=1; i<=p; i++)
for (j=1; j<=n-(1<<(i-1)); j++)
a[i][j]=min(a[i-1][j],a[i-1][j+(1<<(i-1))]);
for (i=1; i<=m; i++) {
scanf("%d%d",&x,&y);
q=0;
while ((1<<(q+1))<=y-x) q++;
printf("%d\n",min(a[q][x],a[q][y-(1<<q)+1]));
}
return 0;
}