Cod sursa(job #1803714)

Utilizator DanyBvGeorge-Daniel Gagiu DanyBv Data 11 noiembrie 2016 18:33:32
Problema Deque Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <cstdio>
#include <deque>

#define NMAX 5000005

using namespace std;

int a[NMAX], n, k;
long long s;
deque<int> D;

int main()
{
    freopen("deque.in", "r", stdin);
    freopen("deque.out", "w", stdout);
    scanf("%d %d", &n, &k);
    for(int i = 1; i <= n; i++)
        scanf("%d", &a[i]);
    for(int i = 1; i <= k - 1; i++)
    {
        while(!D.empty() && a[i] <= a[D.back()])
            D.pop_back();
        D.push_back(i);
    }
    for(int i = k; i <= n; i++)
    {
        while(!D.empty() && a[i] <= a[D.back()])
            D.pop_back();
        D.push_front(i);
        if(!D.empty() && i >= D.back() + k)
            D.pop_back();
        cerr << a[D.back()] << " ";
        s += a[D.back()];
    }
    printf("%lld", s);
    return 0;
}