Cod sursa(job #1128473)

Utilizator QuickFingersQuick Fingers QuickFingers Data 27 februarie 2014 17:15:20
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <fstream>
#include <deque>

#define NMAX 5000007
#define LL long long

using namespace std;

ifstream cin("deque.in");
ofstream cout("deque.out");

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

int main(){
    cin >> n >> k;
    for(int i = 1; i <= n; ++i){
        cin >> a[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())
            Ans += (LL)a[Deq.front()];
    }
    cout << Ans;
    return 0;
}