Cod sursa(job #2902697)

Utilizator Rares_StefanoiuRares Stefanoiu Rares_Stefanoiu Data 16 mai 2022 18:38:39
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include<iostream>
#include<fstream>
using namespace std;
int n, m, v[10000], i, M[10000][11111], x, y, j;
int main() {
	ifstream f("rmq.in");
	ofstream g("rmq.out");
	f >> n >> m;
	for (i = 0; i < n; i++)
		f >> v[i];
	for (i = 0; i < n; i++)
		M[i][0] = i;
	for (j = 1; (1 << j) <= n; j++)
		for (i = 0; i + (1 >> j) - 1 < n; i++)
			if (v[M[i][j - 1]] <= v[M[i + (1 << (j-1))][j - 1]])
				M[i][j] = M[i][j - 1];
			else
				M[i][j] = M[i + (1 << (j-1))][j - 1];
	for (i = 0; i < m; i++)
	{
		f >> x >> y;
		x--;
		y--;
		int k = floor(log2(y - x + 1));
		if (v[M[x][k]] <= v[M[y - (1 << k) + 1][k]])
			g<< v[M[x][k]]<<"\n";
		else
			g << v[M[y - (1 << k) + 1][k]]<<"\n";
	}
	return 0;
}