Cod sursa(job #2499031)

Utilizator melutMelut Zaid melut Data 25 noiembrie 2019 09:58:13
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <vector>
#include <deque>


using namespace std;


char const in_file[] = "deque.in";
char const out_file[] = "deque.out";


ifstream Read(in_file);
ofstream Write(out_file);


int main() {
    uint32_t n;
    uint32_t k;

    Read >> n;
    Read >> k;

    vector<int32_t> values(n);

    for (uint32_t i = 0; i < n; ++i) {
        Read >> values[i];
    }

    deque<int32_t> indices;
    int64_t sum = 0;

    for (uint32_t i = 0; i < n; ++i) {
        while (indices.size()) {
            if (values[i] <= values[indices.back()]) {
                indices.pop_back();
            }
            else {
                break;
            }
        }

        indices.push_back(i);

        if (i + 1 >= k) {
            sum += values[indices.front()];

            if (indices.front() == (int32_t)(i + 1 - k)) {
                indices.pop_front();
            }
        }
    }

    Write << sum;

    Read.close();
    Write.close();

    return 0;
}