Cod sursa(job #1266048)

Utilizator ArmandNMArmand Nicolicioiu ArmandNM Data 18 noiembrie 2014 09:23:03
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#include <deque>

const int NMAX = 5000010;

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

long long N,K,front,back,A[NMAX],suma;
deque <int> Deque;

int main()
{
    f >> N >> K;
    for (int i = 1; i <= N; ++i)
    {
        f >> A[i];
    }

    for (int i = 1; i <= N; ++i)
    {
        while(!Deque.empty() && A[i] <= A[ Deque.back() ])
        {
            Deque.pop_back();
        }
        Deque.push_back(i);
        if (Deque.front() == i-K )
            Deque.pop_front();
        if (i >= K)
            suma += A[Deque.front()];
    }

    g << suma;

    f.close();
    g.close();

    return 0;
}