Cod sursa(job #236821)

Utilizator MariusMarius Stroe Marius Data 28 decembrie 2008 16:28:08
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <algorithm>

using namespace std;

const char iname[] = "deque.in";
const char oname[] = "deque.out";

int main()
{
    ifstream in(iname);
    int n, length, val;
    deque <pair <int, int> > deq;
    long long result = 0;

    in >> n >> length;
    for (int i = 0; i < n; ++ i) {
        in >> val;
        while (!deq.empty() && deq.front().first <= i - length)
            deq.pop_front();
        while (!deq.empty() && deq.back().second >= val)
            deq.pop_back();
        deq.push_back(make_pair(i, val));
        if (i >= length - 1)
            result += deq.front().second;
    }

    ofstream out(oname);
    out << result;
    in.close(), out.close();
    return 0;
}