Cod sursa(job #3221171)

Utilizator DobraVictorDobra Victor Ioan DobraVictor Data 6 aprilie 2024 10:36:57
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <fstream>
#include <stdint.h>

const int32_t MAX_N = 5000000;

int32_t vec[MAX_N];
int32_t deq[MAX_N];
int main() {
	std::ifstream fin("deque.in");
	std::ofstream fout("deque.out");

	int32_t n, k;
	fin >> n >> k;
	for(int32_t i = 0; i != n; ++i)
		fin >> vec[i];

	int32_t st = 0, dr = 0;
	for(int32_t i = 0; i != k - 1; ++i) {
		for(; st != dr && vec[i] <= vec[deq[dr - 1]]; --dr);

		deq[dr++] = i;
	}

	int64_t sum = 0;
	for(int32_t i = k - 1; i != n; ++i) {
		for(; st != dr && vec[i] <= vec[deq[dr - 1]]; --dr);

		deq[dr++] = i;
		if(deq[st] == i - k)
			++st;
		
		sum += vec[deq[st]];
	}

	fout << sum;

	fin.close();
	fout.close();

	return 0;
}