Cod sursa(job #2044718)

Utilizator BlkAlexAlex Negru BlkAlex Data 21 octombrie 2017 12:36:31
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
//http://www.infoarena.ro/problema/deque
#include <iostream>
#include <fstream>
#include <deque>

using namespace std;

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

int v[5000001];
deque <int> min_dq;

int main()
{
    int n, i, k;
    f>>n>>k;
    for (i=1; i<=n; i++)
        f>>v[i];
    long long sum=0;
    for (i=1; i<=k; i++) {
        while (!min_dq.empty() and v[min_dq.back()]>v[i])
            min_dq.pop_back();
        min_dq.push_back(i);
    }
    sum+=v[min_dq.front()];

    for (i=k+1; i<=n; i++) {
        if (!min_dq.empty() and min_dq.front()<=i-k) {
            min_dq.pop_front();
        }

        while (!min_dq.empty() and v[min_dq.back()]>v[i])
            min_dq.pop_back();
        min_dq.push_back(i);

        sum+=v[min_dq.front()];
    }

    g<<sum;

    return 0;
}