Cod sursa(job #3185007)

Utilizator livliviLivia Magureanu livlivi Data 17 decembrie 2023 16:16:42
Problema Secventa Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <deque>
#include <vector>

using namespace std;

ifstream cin("secventa.in");
ofstream cout("secventa.out");

void Solve() {
	int n, k; cin >> n >> k;
	vector<int> v(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}

	deque<pair<int, int>> stk;
	for (int i = 0; i < k; i++) {
		while (!stk.empty() && stk.back().first > v[i]) {
			stk.pop_back();
		}
		stk.push_back({v[i], i});
	}

	int max_base = stk.front().first;
	int left = 0;
	int right = k - 1;

	for (int i = k; i < n; i++) {
		if (stk.front().second == i - k) {
			stk.pop_front();
		}
		while (!stk.empty() && stk.back().first > v[i]) {
			stk.pop_back();
		}
		stk.push_back({v[i], i});
		
		if (max_base < stk.front().first) {
			max_base = stk.front().first;
			left = i - k + 1;
			right = i;
		}
	}

	cout << left + 1 << " " << right + 1 << " " << max_base << "\n";
}

int main() {
	Solve();
	return 0;
}