Cod sursa(job #1254147)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 2 noiembrie 2014 11:47:15
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#include<deque>
#define NMAX 5000010

using namespace std;

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

int n, k, p, u, a[NMAX];
long long sumaMinime=0;

deque<int> dq;

void adaugaSpate(int valoare, int pozitie)
{
    while (!dq.empty() && a[dq.back()]>=valoare) dq.pop_back();
    dq.push_back(pozitie);
}

void eliminaFata(int pozitie)
{
    if (pozitie-dq.front()==k) dq.pop_front();
}

int main()
{
    f>>n>>k>>a[1];

    dq.push_back(1);
    for (int i=2; i<=n; ++i)
    {
        f>>a[i];

        eliminaFata(i);

        adaugaSpate(a[i], i);

        if (i>=k) sumaMinime+=a[dq.front()];
    }

    g<<sumaMinime<<"\n";

    return 0;
}