Cod sursa(job #1971569)

Utilizator zertixMaradin Octavian zertix Data 20 aprilie 2017 16:34:32
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <iostream>
#include <cstdio>
#define maxn 5000000
using namespace std;

long long v[maxn],q[maxn],n,k,suma;

int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    scanf("%lld%lld",&n,&k);
    for (int i=1;i<=n;++i)
        scanf("%lld",&v[i]);
    int fata=1,spate=0;
    for (int i=1;i<=n;++i)
    {
        while (fata<=spate && v[i]<=v[q[spate]])
            --spate;
        q[++spate]=i;
        if (i-k==q[fata]) ///daca s-a depasit subsecventa pentru indicele fata
            fata++;
        if (i>=k)
            suma+=v[q[fata]];

    }
    printf("%lld",suma);
    return 0;
}