Cod sursa(job #1923158)

Utilizator dragomirmanuelDragomir Manuel dragomirmanuel Data 10 martie 2017 21:06:42
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include <deque>
#include <cstdio>

using namespace std;

const int NMax = 5000005;

long long sum = 0;
int N, K;
int v[NMax];

deque < int > Dq;

void Read()
{
   scanf("%d%d", &N, &K);

    for(int i=1; i<=N; ++i)
        scanf("%d", &v[i]);
}

void Solve()
{
    Dq.push_back(1);

    for(int i=2; i<=N; ++i)
    {
        if(Dq.front() == i-K)
            Dq.pop_front();

        while(!Dq.empty() && v[i]<=v[Dq.back()])
            Dq.pop_back();

        Dq.push_back(i);

        if(i>=K)
            sum += v[Dq.front()] * 1LL;
    }

    printf("%lld", sum);
}


int main()
{
    freopen("deque.in", "r", stdin);
 //   freopen("deque.out", "w", stdout);

    Read();
    Solve();
    return 0;
}