Cod sursa(job #1801803)

Utilizator calin1Serban Calin calin1 Data 9 noiembrie 2016 17:04:50
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <cstdio>
#include <deque>
#define N 5000005

using namespace std;

int n, k, vec[N];

deque <int> dq;

long long sum;

void stergere(int i)
{
    while(vec[i] < vec[dq.back()] && !dq.empty())
    {
        dq.pop_back();
    }
}

void citire()
{
    scanf("%d %d\n",&n,&k);

    for(int i = 1 ; i <= k - 1 ; ++i)
    {
        scanf("%d\n",&vec[i]);

        dq.push_back(i);

        stergere(i);
    }

    for(int i = k ; i <= n ; ++i)
    {
        scanf("%d\n",&vec[i]);

        if(i - dq.front() + 1 > k)
        {
            dq.pop_front();
        }

        stergere(i);

        dq.push_back(i);

        sum += vec[dq.front()];

    }

    printf("%lld",sum);
}

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

    citire();

    return 0;
}