Pagini recente » Cod sursa (job #906552) | Cod sursa (job #1541799) | Cod sursa (job #250936) | Cod sursa (job #542544) | Cod sursa (job #1762375)
#include <stdio.h>
#include <stdlib.h>
int r[100000][20];
int log[100000];
int main(){
FILE *fin=fopen("rmq.in","r");
FILE *fout=fopen("rmq.out","w");
int n,i,j,m,a,b,l,rez;
fscanf(fin,"%d%d",&n,&m);
for(i=1; i<=n; i++){
fscanf(fin,"%d",&r[i][0]);
for(j=1; (1<<j)<=i; j++){
r[i][j]=r[i][j-1];
if(r[i][j]>r[i-(1<<(j-1))][j-1])
r[i][j]=r[i-(1<<(j-1))][j-1];
}
}
for(i=2; i<=n; i++)
log[i]=1+log[i/2];
for(i=1; i<=m; i++){
fscanf(fin,"%d%d",&a,&b);
l=log[b-a+1];
rez=r[b][l];
if(rez>r[a+(1<<l)-1][l])
rez=r[a+(1<<l)-1][l];
fprintf(fout,"%d\n",rez);
}
fclose(fin);
fclose(fout);
return 0;
}