Cod sursa(job #978565)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 29 iulie 2013 00:35:43
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>
#include<deque>

#define NMAX 5000007
#define LL long long

using namespace std;

deque < int > Deq;
int n, k;
LL Sum;
int a[NMAX];

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", &a[i]);
    for(int i = 1; i <= n; ++ i){
        while(! Deq.empty() && a[Deq.back()] > a[i])
            Deq.pop_back();
        Deq.push_back(i);
        if(Deq.front() == i - k)
            Deq.pop_front();
        if(i >= k && !Deq.empty())
            Sum += (LL)a[Deq.front()];
    }
    printf("%lld", Sum);
    return 0;
}