Cod sursa(job #3277937)

Utilizator ridicheTudor Diaconu ridiche Data 18 februarie 2025 10:13:23
Problema Range minimum query Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.57 kb
#include <fstream>
#include <cmath>

using namespace std;

ifstream in;
ofstream ou;

int n, m, rmq[18][100005], sz;

int main()
{
	in.open("rmq.in");
	ou.open("rmq.out");
	in >> n >> m;
	for (int i = 0; i < n; i++)
	{
		in >> rmq[0][i];
	}
	sz = log2(n);
	for (int j = 1; j <= sz; j++)
	{
		for (int i = 0; i < n-(1<<j)+1; i++)
		{
			rmq[j][i] = min(rmq[j-1][i], rmq[j-1][i+(1<<(j-1))]);
		}
	}
	for (int i = 0; i < m; i++)
	{
		int x, y;
		in >> x >> y;
		x--; y--;
		int h = log2(y-x);
		ou << min(rmq[h][x], rmq[h][y-(1<<h)+1]) << "\n";
	}
}