Cod sursa(job #650424)
#include <stdio.h>
int main(){
long int a[2000][2000],i,j,k,st,sf,n,m;
FILE* in=fopen("rmq.in","r");
FILE* out=fopen("rmq.out","w");
fscanf(in,"%ld ",&n);
fscanf(in,"%ld ",&m);
a[1][0]=0;
for(i=1;i<=n;i++){
fscanf(in,"%ld ",&a[1][i]);
for(j=1;j<=i;j++){
if(a[j][i-j+1]<a[j][i-j]) a[j+1][i-j]=a[j][i-j+1];
else a[j+1][i-j]=a[j][i-j];
}
}
for(k=1;k<=m;k++){
fscanf(in,"%ld ",&st);
fscanf(in,"%ld ",&sf);
fprintf(out,"%ld\n",a[sf-st+1][st]);
}
fscanf(in,"%ld ",&st);
fscanf(in,"%ld ",&sf);
fprintf(out,"%ld",a[sf-st+1][st]);
fclose(in);
fclose(out);
return 0;
}