Cod sursa(job #1149601)

Utilizator c0rn1Goran Cornel c0rn1 Data 22 martie 2014 06:01:52
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <iostream>
#include <stdio.h>

using namespace std;
int n, k, d[5000010], a[5000010];
long long S;

void sol()
{
    scanf("%d %d", &n, &k);
    int st=1, dr=0, x;
    for (int i=1; i<=n; i++)
        scanf("%d", &a[i]);
    for (int i=1; i<=n; i++)
    {
        while (st<=dr && a[i]<=a[d[dr]])
            dr--;
        d[++dr]=i;
        if (d[st]==i-k)
            st++;
        if (i>=k)
            S+=a[d[st]];
    }
    printf("%lld", S);
}

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