Cod sursa(job #2624857)

Utilizator @stefansevastre@Stefan Sevastre @stefansevastre@ Data 5 iunie 2020 15:51:34
Problema Range minimum query Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.54 kb
#include <fstream>
#include <algorithm>
#include <cmath>

using namespace std;

const int MAX_LENGTH = 1e5 + 1;

int main(){

	int n,m;
	int v[MAX_LENGTH][18];

	ifstream f("rmq.in");
	ofstream g("rmq.out");

	f>>n>>m;

	for(int i=1; i<=n; ++i)
		f>>v[i][0];

	for(int i=1; i<=18; ++i)
		for(int j=1; j<=n-(1<<(i))+1; ++j)
			v[j][i]=min(v[j][i-1], v[j+(1<<(i-1))][i-1]);

	int st, dr;
	int poz;
	for (int i = 1; i <= m; ++i){
		f>>st>>dr;
		int poz=log2(dr-st+1);
		g<<min(v[st][poz], v[dr-(1<<poz)+1][poz])<<endl;
	}
}