Cod sursa(job #2864910)

Utilizator spooderRares Lazea spooder Data 8 martie 2022 12:19:11
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

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

int matrice[43][10010];
int v[100010], x, y, l;
int n, m;

int main()
{
	fin >> n >> m;
	for (int i = 2; i <= 100010; i++)
	{
		v[i] = v[i / 2] + 1;
	}
	for (int i = 1; i <= n; i++)
	{
		fin >> matrice[0][i];
	}
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n - (1 << i) + 1; j++)
		{
			matrice[i][j] = min(matrice[i - 1][j], matrice[i - 1][j + (1 << (i - 1))]);
		}
	}
	while (m--)
	{
		fin >> x >> y;
		l = y - x + 1;
		fout << min(matrice[v[l]][x], matrice[v[l]][y - (1 << [l]) + 1]) << '\n';
	}
}