Cod sursa(job #2751019)

Utilizator HadircaDionisieHadirca Dionisie HadircaDionisie Data 13 mai 2021 21:12:33
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
// Arbori_noduri_BST_Nebunii.cpp : This file contains the 'main' function. Program execution begins and ends there.
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>


using namespace std;

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

int n, m,val,pos,a,b,mi;
int segTree[400010];

void query(int ind, int st, int dr) {
	if (a <= st && dr <= b) {
		mi = min(segTree[ind], mi);
		return;
	}
	int mid = (st + dr) / 2;
	if (a <= mid)
		query(2 * ind, st, mid);
	if (mid < b)
		query(2 * ind + 1, mid + 1, dr);
	
}

void update(int ind, int st, int dr) {
	if (st == dr) {
		segTree[ind] = val;
		return;
	}
	int mid = (st + dr) / 2;
	if (pos <= mid) {
		update(2 * ind, st, mid);
	}
	else {
		update(2 * ind + 1, mid + 1, dr);
	}
	segTree[ind] = min(segTree[2 * ind], segTree[2 * ind + 1]);
}
int main()
{

	fin >> n >> m;
	for (int i = 1; i <= n; i++) {
		fin >> val;
		pos = i;
		update(1, 1, n);
	}

	//build(1, 1, n);

	for (int i = 0; i < m; i++) {
		fin >> a >> b;
		mi = 100000;
		query(1, 1, n);
		fout << mi << '\n';

	}
	return 0;
}