Cod sursa(job #3260561)

Utilizator BledeaAlexBledea Alexandru BledeaAlex Data 2 decembrie 2024 19:28:24
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int N_MAX = 5e6 + 1;
int N, K;
int v[N_MAX];
ll sum;

void SetInput(string name)
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    freopen((name + ".in").c_str(), "r", stdin);
    freopen((name + ".out").c_str(), "w", stdout);
}

deque<int> mini; // always sorted

int main()
{
    SetInput("deque");

    cin >> N >> K;

    for(int i = 0; i < K; i++)
    {
        cin >> v[i];
        while( !mini.empty() && v[i] < mini.front())
            mini.pop_front();
        mini.push_front(v[i]);
    }

    sum = mini.back();

    for(int i = K; i < N; i++)
    {
        cin >> v[i];
        while( !mini.empty() && v[i] < mini.front())
            mini.pop_front();
        mini.push_front(v[i]);

        if(mini.back() == v[i-K])
            mini.pop_back();

        sum += (ll) mini.back();
    }

    cout << sum;

    return 0;
}