Cod sursa(job #2733847)

Utilizator teodora_ghinescughinescu teodora teodora_ghinescu Data 30 martie 2021 23:49:31
Problema Deque Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
/*
-7  => -7
9   => 2
2   => -1
4   => -1
-1  => -1
5   => 5
6   => 1
7
1*/
#include <iostream>
#include <deque>
#include <fstream>

using namespace std;

ifstream in("deque.in");
ofstream out("deque.out");

int v[5000000];
deque < int > dq;

int main()
{
    int k, n;
    long long sum(0);
    cin >> n >> k;
    for (int i = 0; i < n; i++)
    {
        in >> v[i];

        if (!dq.empty() && dq.front() == i - k) /// atata timp cat coada nu este goala si primul element din coada este
            dq.pop_front(); /// atunci sterge primul element

        while (!dq.empty() && v[i] <= v[dq.back()])
        {
            dq.pop_back();/// taie elemente pana ajunge la minim
        }

        dq.push_back(i);

        if (i >= k - 1)
            sum += v[dq.front()];
    }
    /**int st = 0; int dr = -1;
    for (int i = 0; i < n; i++)
    {
        cin >> v[i];
        if (st <= dr && v[dq[st]] == i - k);
            st++;
        while (st <= dr && v[i] <= v[dq[dr]])
            dr--;
        dq[++dr] = i;
        if (i >= k - 1)
            sum += v[dq[st]];
     }*/
    cout << sum;
    return 0;
}