Cod sursa(job #1804172)

Utilizator maria_sinteaMaria Sintea maria_sintea Data 12 noiembrie 2016 11:57:54
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <deque>
#include <cstdio>
#define Nmax 5000005

using namespace std;

long long int a[Nmax];
int n, k;
deque <int> Q;

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

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

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