Cod sursa(job #2529396)

Utilizator bilghinIsleam Bilghin bilghin Data 23 ianuarie 2020 13:06:12
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.52 kb
#include <stdio.h>
#include <cmath>

using namespace std;

int v[100001],rmq[1000000001];

int main(){

FILE* si=fopen("rmq.in", "r");
FILE* so=fopen("rmq.out", "w");

int n,m,in,sf,k;

fscanf(si,"%d%d",&n,&m);
for(int i=1;i<=n;i++){
	fscanf(si,"%d",&rmq[i][0]);
}
for(j=1;j<=(1<<j);j++){
	for(i=1;i<=n-(1<<j);i++){
		rmq[i][j]=min(rmq[i][j-1],rmq[i+(1<<(j-1))][j-1]);
	}
}
while(m--){
	fscanf(si,"%d%d",&in,&sf);
	k=log2(sf-in+1);
	fprintf(so,"%d\n",min(rmq[in][k],rmq[1+sf-(1<<k)][k]));
}


fclose(si);
fclose(so);

return 0;
}