Cod sursa(job #2951072)

Utilizator LXGALXGA a LXGA Data 5 decembrie 2022 10:52:40
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.59 kb
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>

using namespace std;
int log2_floor(int i) {
    return i ? __builtin_clz(1) - __builtin_clz(i) : -1;
}
int n,m;
int v[100001],st[18][100001];
int main()
{
	ios_base::sync_with_stdio(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>v[i];
		st[0][i]=v[i];
	}
	int k=log2_floor(n);
	for(int i=1;i<=k;i++)
	{
		for(int j=1;j+(1<<i)-1<=n;j++)
			st[i][j]=min(st[i-1][j],st[i-1][j+(1<<(i-1))]);
	}
	int l,r;
	for(int i=1;i<=m;i++)
	{
		cin>>l>>r;
		int j=log2_floor(r-l+1);
		cout<<min(st[j][l],st[j][r-(1<<j)])<<'\n';
	}
	return 0;
}