Cod sursa(job #2553894)

Utilizator MarcGrecMarc Grec MarcGrec Data 22 februarie 2020 12:57:24
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.54 kb
#define MAX_N 5000000

#include <fstream>
#include <cstdint>
using namespace std;

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

int n, k, f, b, A[MAX_N + 1], Dq[MAX_N + 1];
int64_t r;

int main()
{
	fin >> n >> k;
	for (int i = 1; i <= n; ++i)
	{
		fin >> A[i];
	}
	
	f = 1;
	b = 0;
	for (int i = 1; i <= n; ++i)
	{
		while ((f <= b) && (A[i] <= A[Dq[b]])) { --b; }
		Dq[++b] = i;
		if (Dq[f] == (i - k)) { ++f; }
		if (i >= k) { r += A[Dq[f]]; }
	}
	
	fout << r;
	
	fin.close();
	fout.close();
	return 0;
}