Cod sursa(job #1494404)

Utilizator andreea_zahariaAndreea Zaharia andreea_zaharia Data 30 septembrie 2015 23:52:45
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <deque>
#include <fstream>

using namespace std;

ifstream fin ("deque.in");
ofstream fout ("deque.out");

int N, K;
long long ANS = 0;

deque< pair<int, int> > DQ;

int main () {
    fin >> N >> K;
    int X;
    for (int i = 1; i <= K; i++) {
        fin >> X;

        while ( !DQ.empty () && X < DQ.back ().first) {
            DQ.pop_back ();
        }
        DQ.push_back (make_pair (X, i));

        if (DQ.front ().second <= i - K) {
            DQ.pop_front ();
        }
    }
    ANS += DQ.front ().first;
    for (int i = K + 1; i <= N; i++) {
        fin >> X;

        while ( !DQ.empty () && X < DQ.back ().first) {
            DQ.pop_back ();
        }
        DQ.push_back (make_pair (X, i));

        if (DQ.front ().second <= i - K) {
            DQ.pop_front ();
        }

        ANS += DQ.front ().first;
    }
    fout << ANS << '\n';

    return 0;
}