Cod sursa(job #2620761)

Utilizator Zamfirescuste2Zamfirescu Stefan Zamfirescuste2 Data 29 mai 2020 17:21:49
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
#include <algorithm>
#include <cmath>

using namespace std;

const int MAX_LENGTH = 1e5 + 1;

int main(){
	
	int n,m;
	int mat[MAX_LENGTH][18];

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

	f >> n >> m;

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

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

	int stanga, dreapta;
	int poz;
	for (int i = 1; i <= m; ++i){
		f >> stanga >> dreapta;
		int poz = log2(dreapta - stanga + 1);
		g << min(mat[stanga][poz], mat[dreapta - (1 << poz ) + 1][poz]) << "\n";
	}
}