Cod sursa(job #2728554)

Utilizator UnknownPercentageBuca Mihnea-Vicentiu UnknownPercentage Data 23 martie 2021 13:43:58
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.56 kb
#include <bits/stdc++.h>
 
using namespace std;

ifstream f("rmq.in");
ofstream g("rmq.out");

int st[100001][26];
int Log[100001];
int N, M;

int main(){
	f >> N >> M;

	for(int i = 1;i <= N;i++){
		f >> st[i][0];
		if(i > 1) Log[i] = Log[i / 2] + 1;
	}

	int K = Log[N];
	for(int j = 1;j <= K;j++)
		for(int i = 1;i + (1 << j) <= N + 1;i++){
			st[i][j] = min(st[i][j - 1], st[i + (1 << (j - 1))][j - 1]);
		}

	while(M--){
		int L, R;
		f >> L >> R;
		int j = Log[R - L + 1];
		g << min(st[L][j], st[R - (1 << j) + 1][j]) << "\n";
	}
}