Cod sursa(job #3032379)

Utilizator vladakingpopescu vlad vladaking Data 22 martie 2023 09:03:55
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.58 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("rmq.in");
ofstream fout("rmq.out");

int n,m;
std::vector<std::vector<int> > v;

void compute_v(){

	for(int i=1;1<<i<=v.size()-1;i++){
		for(int j=1;j+(1<<i)-1<=v.size()-1;j++){
			v[j].push_back( min(v[j][i-1],v[j+(1<<(i-1))][i-1]) );
		}
	}

}

int main(int argc, char const *argv[]) {
	fin>>n>>m;
	v.resize(n+1);
	int x,y;

	for(int i=1;i<=n;i++){
		fin>>x;
		v[i].push_back(x);
	}
	compute_v();

	for(int i=1;i<=m;i++){
		fin>>x>>y;
		int exp= (int)log2(y-x+1);
		fout<<min(v[x][exp],v[y-(1<<exp)+1][exp])<<'\n';
	}
	return 0;
}