Cod sursa(job #3041066)

Utilizator BadHero112Ursu Vasile BadHero112 Data 30 martie 2023 21:49:03
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>
using ll=long long;
#define S second
#define F first
#define endl '\n'
#define spid ios_base::sync_with_stdio(false);cin.tie(NULL);
const int mod=1e9+7;
const double pi=3.14159265359;
const int maxn=100001;
using namespace std;

int n,q,lg[maxn],A[maxn];

int sparse[19][maxn];

int main(){
	ifstream cin("rmq.in");
	ofstream cout("rmq.out");
	cin>>n>>q;
	for(int i=2;i<=maxn;i++){
		lg[i]=lg[i/2]+1;
	}
	for(int i=0;i<n;i++)cin>>A[i];
	for(int i=0;i<n;i++)sparse[0][i]=A[i];
	for(int i=1;i<=18;i++){
		for(int j=0;j+(1<<i)-1<n;j++){
			sparse[i][j]=min(sparse[i-1][j],sparse[i-1][j+(1<<(i-1))]);
		}
	}
	while(q--){
		int l,r;
		cin>>l>>r;
		l--;
		r--;
		int i=lg[r-l+1];
		cout<<min(sparse[i][l],sparse[i][r-(1<<i)+1])<<endl;
	}
}