Cod sursa(job #2207355)

Utilizator EpureCarlaEpure Carla EpureCarla Data 25 mai 2018 15:50:05
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>

using namespace std;

int v[5000001],i,n,k,st,dr,a[5000001];

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

void elimina_fata(int ult)
{
    if(st<=dr && a[st]==ult-k)
        st++;
}

void elimina_spate(int ult)
{
    while(st<=dr && v[a[dr]]>=v[ult])
            dr--;
}

void adauga(int ult) {
    elimina_fata(ult);
    elimina_spate(ult);
    a[++dr]=ult;
}

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

    long long sum=0;
    for (i=k; i<=n; ++i) {
        adauga(i);
        sum += v[a[st]];
    }

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