Cod sursa(job #2804116)

Utilizator NadiraBodrogean Nadira Nadira Data 20 noiembrie 2021 22:59:07
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.55 kb
#include <fstream>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n, m, rmq[17][100001], Log2[100001];
int main()
{int i,j,x, y, k;
	cin >> n >> m;
	for(i = 1; i <= n; ++i)
		cin >> rmq[0][i];
	for( i = 2; i <= n; ++i)
		Log2[i] = Log2[i/2] + 1;
	for( i = 1; (1<<i) <= n; ++i)
		for( j = 1; j <= n - (1<<i) + 1; ++j)
			rmq[i][j] = min(rmq[i-1][j], rmq[i-1][j + (1<<(i-1))]);
	for(i=1;i<=m;i++)
	{
		cin >> x >> y;
		k = Log2[y-x+1];
		cout << min(rmq[k][x], rmq[k][y - (1<<k) + 1]) << '\n';
	}
	return 0;
}