Cod sursa(job #2720535)

Utilizator gavra_bogdanBogdan Gavra gavra_bogdan Data 10 martie 2021 22:29:56
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.57 kb
#include <fstream>
#include <cmath>
#define MIN(a, b) (((a)>(b))?(b):(a))

const int N = 1e5 + 5;

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

int rmq[20][N];

int query(int l, int r) {
	int sz = (int)log2(r-l+1);
	return MIN(rmq[sz][l], rmq[sz][r-(1<<sz)+1]);
}

int main() {
	int n, m, left, right;
	fin>>n>>m;
	for(int i=0;i<n;i++) fin>>rmq[0][i];
	for(int i=1;i<20;i++)
		for(int j=0;j<n-(1<<i)+1;j++)
			rmq[i][j] = MIN(rmq[i-1][j], rmq[i-1][j+(1<<(i-1))]);
	while(m--) {
		fin>>left>>right;
		fout<<query(left-1, right-1)<<'\n';
	}
}