Cod sursa(job #2867768)

Utilizator vladsipunct5555Butnrau Vlad vladsipunct5555 Data 10 martie 2022 15:54:55
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream in ("fact.in");
ofstream out ("fact.out");
int v[100001];
int rmq[20][100001];
int llog[100001];
int rasp (int st, int dr)
{
	int poz = llog[dr - st + 1];
	return min(rmq[poz][st], rmq[poz][dr - (1<<poz) + 1]);
}
main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int n, q;
	cin >> n >> q;
	for (int i = 1;i<=n;++i)
		cin >> v[i];
	llog[1] = 0;
	for (int i = 2;i<=n;++i)
		llog[i] = llog[i / 2] + 1;
	for (int i = 1;i<=n;++i)
		rmq[0][i] = v[i];
	for (int k = 1, pow = 2;pow <= n;pow<<=1, ++k)
		for (int i = 1;i<= n - pow + 1;++i)
			rmq[k][i] = min(rmq[k - 1][i], rmq[k - 1][i + (pow>>1)]);
	for (int t = 1;t<=q;++t)
	{
		int a, b;
		cin >> a >> b;
		cout << rasp (a, b) << '\n';
	}
	return 0;
}