Cod sursa(job #2777354)

Utilizator radu.Radu Cristi radu. Data 23 septembrie 2021 08:33:25
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
//https://infoarena.ro/problema/deque

#include <iostream>
#include <fstream>
#include <deque>
#include <vector>
using namespace std;
vector<int> v;
deque<pair<int, int>> d;
ifstream fin("deque.in");
ofstream fout("deque.out");
int N, K;
void afis(deque<pair<int ,int>> a) {
    while(!a.empty()) {
        cout << a.front().first << " ";
        a.pop_front();
    }
}
void read() {
    int nr;
    fin >> N >> K;
    for (int i = 0; i < N; ++i) {
        fin >> nr;
        v.push_back(nr);
    }
}
int main()
{
    read();
    long long sum = 0;
    for (int i = 0; i < N; ++i) {
        while (!d.empty() && d.front().first > v[i]) {
            d.pop_front();
        }
        d.emplace_front(v[i], i);
        if (!d.empty() && i - d.back().second >= K) {
            d.pop_back();
        }
        if (i >= (K - 1) && i - d.back().second <= K) {
            sum += d.back().first;
        }
        //my brain no work
        /*afis(d);
        cout << "\n";*/
    }
    fout << sum << "\n";
    return 0;
}