Cod sursa(job #1804128)

Utilizator cristii2000cristiiPanaite Cristian cristii2000cristii Data 12 noiembrie 2016 11:33:19
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>
#include <deque>

using namespace std;
deque <int> deq;
long long s;
int k, n, a[5000005];
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; i++)
    {
        while(!deq.empty() && a[i]<a[deq.back()])
            deq.pop_back();
        deq.push_back(i);

    }
    for(int i=k; i<=n; i++)
    {
        while(!deq.empty() && a[i]<a[deq.back()])
            deq.pop_back();
        deq.push_back(i);
        if(deq.back()-deq.front()>=3)
            deq.pop_front();
        s+=a[deq.front()];
    }
    printf("%lld", s);
    return 0;
}