Cod sursa(job #2191392)

Utilizator dragos.galeteanu2001Dragos Iulian dragos.galeteanu2001 Data 2 aprilie 2018 18:51:59
Problema Secventa Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
#include <deque>

using namespace std;

int n, k, base = -30005, leftIndex, rightIndex, v[500005];
deque < int > positions;

int main()
{
	FILE *in, *out;
	in = freopen("secventa.in", "r", stdin);
	out = freopen("secventa.out", "w", stdout);

	scanf("%d%d", &n, &k);

	for (int i = 1; i <= n; i++) {
		scanf("%d", &v[i]);
		while (!positions.empty() && v[i] < v[positions.back()]) positions.pop_back();
		positions.push_back(i);

		if (positions.front() == i - k) positions.pop_front();

		if (i >= k && base < v[positions.front()]) {
			base = v[positions.front()];
			rightIndex = i;
			leftIndex = i - k + 1;
		}
	}

	fclose(in);
	printf("%d %d %d", leftIndex, rightIndex, base);
	fclose(out);

    return 0;
}