Cod sursa(job #2629824)

Utilizator gasparrobert95Gaspar Robert Andrei gasparrobert95 Data 22 iunie 2020 19:36:04
Problema Deque Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
deque <int> q;
int n, k, el;
long long sum;

int main() {
    fin >> n >> k;
    for (int i = 1; i <= n; ++i) {
        fin >> el;
        if (k == 1) {
            sum += el;
            continue;
        }
        if (i == 1) {
            q.push_back(el);
            continue;
        }
        if (!q.empty() && q.front() > el) {
            int aux = q.size();
            q.clear();
            q.insert(q.end(), aux + 1, el);
        }
        else {
            int el_sterse = 0;
            while (!q.empty()) {
                if (q.back() > el) {
                    q.pop_back();
                    ++el_sterse;
                }
                else
                    break;
            }
            q.insert(q.end(), el_sterse + 1, el);
        }
        if (i >= k && !q.empty()) {
            sum += q.front();
            q.pop_front();
        }
    }
    fout << sum;
    return 0;
}