Cod sursa(job #3217103)

Utilizator B0gd4n_Ciobanu Bogdan-Mihai B0gd4n_ Data 21 martie 2024 01:09:06
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <deque>

using namespace std;

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

long long sum;
int n, v[5000001], k;
deque<int> q;

int main()
{
	fin >> n >> k;
	for (int i = 1; i <= n; ++i) {
		fin >> v[i];
	}

	q.push_back(1);
	for (int i = 2; i <= k; ++i) {
		if (!q.empty()) {
			if (v[i] > v[q.back()]) {
				q.push_back(i);
			}
			else {
				while (!q.empty() && v[i] < v[q.back()]) {
					q.pop_back();
				}
				q.push_back(i);
			}
		}
		else q.push_back(i);
	}

	sum += v[q.front()];
	for (int i = k + 1; i <= n; ++i) {
		if (q.front() == i - k) {
			q.pop_front();
		}

		if (!q.empty()) {
			if (v[i] > v[q.back()]) {
				q.push_back(i);
			}
			else {
				while (!q.empty() && v[i] < v[q.back()]) {
					q.pop_back();
				}
				q.push_back(i);
			}
		}
		else q.push_back(i);

		sum += v[q.front()];
	}

	fout << sum;

	return 0;
}