Cod sursa(job #2999827)

Utilizator MateitzaMatei Dinu Mateitza Data 11 martie 2023 16:15:46
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
// Competitive.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

#include <fstream>
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>
#include <deque>
#include <queue>

struct element {
	int value;
	int position;
};

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

std::vector<element> codeAppliances;
std::deque<element> deq;

int main()
{
	long long n, sum = 0, k;
	fin >> n >> k;
	for (int i = 0; i < n; ++i) {
		int nr;
		element el;
		fin >> nr;
		el.value = nr;
		el.position = i;
		codeAppliances.push_back(el);
	}
	for (int i = 0; i < k; ++i) {
		while (deq.size() != 0 && codeAppliances[i].value < deq.back().value) {
			deq.pop_back();
		}
		deq.push_back(codeAppliances[i]);
	}
	sum += deq.front().value;
	for (int i = 0; i < n - k; ++i) {
		int index = k+i;
		while (deq.size() != 0 && codeAppliances[index].value < deq.back().value) {
			deq.pop_back();
		}
		deq.push_back(codeAppliances[index]);
		if (deq.front().position <= index-k) {
			deq.pop_front();
		}
		sum += deq.front().value;
	}
	fout << sum;
}