Cod sursa(job #2332414)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 30 ianuarie 2019 18:46:48
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#include <deque>

using namespace std;

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

deque <long long> d;
long long v[5000005];

int main()
{
    int n, k;
    fin >> n >> k;

    long long sum = 0;
    for(int i = 1; i <= k; ++i)
    {
        fin >> v[i];

        if(i == 1)
            d.push_back(v[i]);
        else
        {
            while(!d.empty() && d.back() > v[i])
                d.pop_back();

            d.push_back(v[i]);
        }
        if(i == k)
            sum += d.front();
    }

    for(int i = k + 1; i <= n; ++i)
    {
        fin >> v[i];

        if(v[i - k] == d.front())
            d.pop_front();

        while(!d.empty() && d.back() > v[i])
            d.pop_back();

        d.push_back(v[i]);

        sum += d.front();

    }

    fout << sum << '\n';
    return 0;
}