Cod sursa(job #2636334)

Utilizator irimia_alexIrimia Alex irimia_alex Data 17 iulie 2020 15:40:47
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.58 kb
#include <stdio.h>
#include <deque>
#define NMAX 5000000

FILE* fin, * fout;

int v[NMAX], n, k;

int main() {
	fin = fopen("deque.in", "r");
	fout = fopen("deque.out", "w");

	fscanf(fin, "%i %i", &n, &k);
	for (int i = 0;i < n;++i)
		fscanf(fin, "%i", &v[i]);

	std::deque<int> q;
	q.push_back(0);

	long long int s = 0;

	for (int i = 1;i < n;++i) {
		if (q.front() < i - k + 1)
			q.pop_front();
		while (!q.empty() && v[i] < v[q.back()])
			q.pop_back();
		q.push_back(i);
		if (i >= k - 1)
			s += v[q.front()];
	}

	fprintf(fout, "%lld", s);

	return 0;
}