Cod sursa(job #2666723)

Utilizator teofilotopeniTeofil teofilotopeni Data 2 noiembrie 2020 14:23:53
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <stdio.h>
#include <deque>

using namespace std;

int v[5000010];

int main() {
    freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
	deque <int> h;
	int n, k, i;
	scanf("%d %d %d", &n, &k, &v[1]);
	h.push_back(v[1]);
	int suma = 0, size = 1;
	for (i = 2; i < k; i++) {
        scanf("%d", &v[i]);
        while (size > 0 && v[i] < h.at(size - 1)) {
            size--;
            h.pop_back();
        }
        h.push_back(v[i]);
        size++;
	}
	for (i = k; i <= n; i++) {
        scanf("%d", &v[i]);
        while (size > 0 && v[i] < h.at(size - 1)) {
            size--;
            h.pop_back();
        }
        h.push_back(v[i]);
        size++;
        suma += h.at(0);
        if (v[i - k + 1] == h.at(0)) {
            h.pop_front();
            size--;
        }
	}
	printf("%d", suma);
	return 0;
}