Pagini recente » Cod sursa (job #1755809) | Cod sursa (job #1331831) | Cod sursa (job #2885809) | Cod sursa (job #2079343) | Cod sursa (job #168416)
Cod sursa(job #168416)
#include<stdio.h>
#define min(a,b) ((a<=b)?a:b)
int b[100001],a[40][100001],n,m,i,j,k,l,p;
FILE *in,*out;
int main(){
in=fopen("rmq.in","rt");
out=fopen("rmq.out","wt");
fscanf(in,"%d%d",&n,&m);
b[1]=0;
for(i=2;i<=n;i++)
b[i]=b[i>>1]+1;
for(i=1;i<=n;i++)
fscanf(in,"%d",&a[0][i]);
for(i=1;i<=b[n];i++){
l=n-(1<<i)+1;
for(j=1;j<=l;j++)
a[i][j]=min(a[i-1][j],a[i-1][((j*2+(1<<i)-1)>>1)+1]);
}
for(i=1;i<=m;i++){
fscanf(in,"%d%d",&l,&p);
k=b[p-l+1];
fprintf(out,"%d\n",min(a[k][l],a[k][p-(1<<k)+1]));
}
return 0;
}