Cod sursa(job #333865)

Utilizator levap1506Gutu Pavel levap1506 Data 24 iulie 2009 13:32:44
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <fstream>
#include <deque>
#include <iostream>
using namespace std;
deque<long long> list;
long N,K,A[5000010],i;
long long sum;
int main () {
    ifstream in;
    ofstream out;
    in.open("deque.in");
    out.open("deque.out");
    in >> N >> K;
    for (i=1;i<=N;i++) {
        in >> A[i];
    }
    for (i=1;i<=N;i++) {
        while(!list.empty()&&A[i]<=A[list.back()]) {
          list.pop_back();
        }
        list.push_back(i);
        if (list.front()==i-K) list.pop_front();
        if (i>=K) sum+=A[list.front()];

    }
    out<<sum;
    out.close();
    return 0;
}