Cod sursa(job #1174129)

Utilizator sorin2kSorin Nutu sorin2k Data 22 aprilie 2014 00:49:40
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include<fstream>
#include<cmath>
using namespace std;

int a[100000][17];

int main() {
	ifstream fin("rmq.in");
	ofstream fout("rmq.out");
	int i, j, n, m, x, y, pas = 0, log;

	fin >> n >> m;
	log = (int) log2f(n);
	for(i = 0; i < n; i++) fin >> a[i][0];
	for(i = 1; i <= log; i++) {
		pas = (1 << i-1);
		for(j = 0; j < n - pas + 1; j++) {
			a[j][i] = min(a[j][i-1], a[j+pas][i-1]);
		}
	}

	for(i = 0; i < m; i++) {
		fin >> x >> y;
		x--, y--;
		log = (int) log2f(y-x);
		fout << min(a[x][log], a[y-(1 << log)+1][log]) << "\n";
	}
	return 0;
}