Cod sursa(job #1060795)

Utilizator mvcl3Marian Iacob mvcl3 Data 18 decembrie 2013 19:14:00
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <deque>

#define in "deque.in"
#define out "deque.out"
#define Max_Size 5000009
#define LL long long

std :: ifstream f(in);
std :: ofstream g(out);

int N, K;
int A[Max_Size];
LL rez;

std :: deque < int > DQ;

inline void Read_Data()
{
    f >> N >> K;
    for(int i = 1; i <= N; ++i) f >> A[i];
}

inline void Solve()
{
    for(int i = 1; i <= N; ++i)
    {
        while(!DQ.empty() && A[ DQ.back() ] >= A[i]) DQ.pop_back();
        DQ.push_back(i);

        if(i - DQ.front() + 1 > K) DQ.pop_front();

        if(i >= K)  rez += A[DQ.front()];
    }
}

int main()
{
    Read_Data();
    Solve();

    g << rez << '\n';

    g.close();
    return 0;
}