Cod sursa(job #2891271)

Utilizator matthriscuMatt . matthriscu Data 18 aprilie 2022 00:07:26
Problema Secventa 2 Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>
using namespace std;

#define name "secv2"
#define NMAX 50005

int main()
{
	FILE *f = fopen(name ".in", "r");

	int n, k;
	fscanf(f, "%d%d", &n, &k);

	int v[NMAX];
	for (int i = 1; i <= n; ++i)
		fscanf(f, "%d", &v[i]);
	
	fclose(f);

	deque<pair<int, int>> dq;
	int sum = 0;

	for (int i = 1; i <= k; ++i) {
		sum += v[i];
		dq.push_back({v[i], i});
	}

	vector<int> ans = {1, k, sum};
	for (int i = k + 1; i <= n; ++i) {
		sum += v[i];
		dq.push_back({v[i], i});
		while (dq.size() > k && sum - dq.front().first > sum) {
			sum -= dq.front().first;
			dq.pop_front();
		}
		
		if (sum > ans[2])
			ans = {dq.front().second, dq.back().second, sum};
	}

	f = fopen(name ".out", "w");
	fprintf(f, "%d %d %d\n", ans[0], ans[1], ans[2]);
	fclose(f);
}