Cod sursa(job #2842587)

Utilizator StefanL2005Stefan Leustean StefanL2005 Data 1 februarie 2022 10:46:56
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <vector>
#include <deque>
#include <fstream>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");

int main()
{
    int n, k, nr = 1;
    int64_t sum = 0;
    in>> n >> k;

    vector<int64_t> v(n);
    deque<int64_t> dQ;

    in>> v[0];
    dQ.push_front(v[0]);

    if (k == 1)
    {
        sum += dQ.front();
        dQ.pop_front();
        nr--;
    }

    for (int i = 1; i < n; i++)
    {
        in>> v[i];
        nr++;
        if (dQ.empty() || v[i] >= dQ.front())
            dQ.push_front(v[i]);
        else
        {
            while (not dQ.empty() && v[i] < dQ.front())
            {
                dQ.pop_front();
            }
            dQ.push_front(v[i]);
        }
        int64_t ba = dQ.back();

        if (nr == k)
        {
            sum += ba;
            if (v[i- k + 1] == ba)
                dQ.pop_back();
            nr--;
        }
    }
    out<< sum;


    in.close();
    out.close();
    return 0;
}