Cod sursa(job #1097889)

Utilizator crisbodnarCristian Bodnar crisbodnar Data 4 februarie 2014 10:10:16
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <deque>
#include <algorithm>

using namespace std;

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

const int Nmax = 5e6 + 100;
const int OO = 0x3f3f3f3f;

struct Poz_Val{
    int p, v;
}E;

int N, K;
long long S;
deque <Poz_Val> D;

int main()
{
    fin >> N >> K;
    E.p = 0; E.v = OO;
    D.push_back(E);
    for(int i = 1; i <= K; i++)
    {
        fin >> E.v; E.p = i;
        while(D.back().v >= E.v && D.size())
            D.pop_back();
        D.push_back(E);
    }

    S = D.front().v;
    for(int i = K + 1; i <= N; i++)
    {
        fin >> E.v; E.p = i;
        while(D.back().v >= E.v && D.size())
            D.pop_back();
        D.push_back(E);
        if(D.front().p <= i - K)
            D.pop_front();
        S += D.front().v;
    }
    fout << S;
    return 0;
}