Cod sursa(job #2133406)

Utilizator flibiaVisanu Cristian flibia Data 16 februarie 2018 21:42:12
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
//rmq cu vectori 
#include <bits/stdc++.h>

using namespace std;

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

int n, m, x, l, r;
vector <int> v[18];

int main(){
	in >> n >> m;
	for(int i = 1; i <= n; i++)
		in >> x, v[0].push_back(x);
	int sz = log2(n);
	for(int pw = 1; pw <= sz; pw++)
		for(int j = 0; j + (1 << pw) <= n; j++)
			v[pw].push_back(min(v[pw - 1][j], v[pw - 1][j + (1 << (pw - 1))]));
	while(m--){
		in >> l >> r;
		l--; r--;
		int sz = log2(r - l + 1);
		out << min(v[sz][l], v[sz][r + 1 - (1 << sz)]) << '\n';
	}
	return 0;
}