Cod sursa(job #1871561)

Utilizator SilviuIIon Silviu SilviuI Data 7 februarie 2017 15:06:20
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <stdio.h>
#define nmax 5000010

using namespace std;

int n, k, pr, ul;
int t[nmax], udeque[nmax];
long long int sol = 0;

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", &t[i]);

    pr = 1; ul = 0;

    for (int i = 1; i <= n; i++) {

        while (pr <= ul && t[udeque[ul]] >= t[i]) ul--;

        ul++; udeque[ul] = i;

        if (i - udeque[pr] == k) pr++;

        if (i >= k) sol = sol + t[udeque[pr]];

    }

    printf("%lld", sol);

    return 0;
}