Cod sursa(job #905940)

Utilizator SPDionisSpinei Dionis SPDionis Data 6 martie 2013 12:31:49
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <deque>
#include <vector>
#include <iostream>

using std::vector;
using std::deque;
using std::cout;
std::ifstream in("deque.in");
std::ofstream out("deque.out");

deque<long> a;
vector<long> V;
long N,k;
long long sum = 0;

int main()
{
    in >> N >> k;
    V.reserve(N + 1);
    V.push_back(0);
    for (int i = 1; i <= N; ++i){
        long x; in >> x;
        V.push_back(x);
    }


    for (int i = 1; i <= N; ++i)
    {

        while ( !a.empty() && V[i] < a.back() )
            a.pop_back();

        a.push_back( V[i] );

        if ( i > k && a.front() == V[i - k] )
            a.pop_front();

        if ( i >= k ) sum += a.front();
    }

    out << sum;

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