Cod sursa(job #531117)

Utilizator skullLepadat Mihai-Alexandru skull Data 8 februarie 2011 22:17:30
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <stdio.h>
#include <deque>
using namespace std;
#define nmax 5000005

int A[nmax];
int N, K;
deque<int> Q;
long long sum;

int main ()
{
    int i;
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    scanf("%d%d", &N, &K);
    for (i = 1; i <= N; ++i) scanf("%d", &A[i]);
    for (i = 1; i <= N; ++i)
    {
        while ( ! Q.empty() && A[i]<=Q.back() ) Q.pop_back();
        Q.push_back(A[i]);
        if (Q.front() == A[i-K]) Q.pop_front();
        if (i >= K) sum += Q.front();
    }
    printf("%lld", sum);
    return 0;
}