Cod sursa(job #2033643)

Utilizator ciocan_catalinCiocan Catalin - Iulian ciocan_catalin Data 7 octombrie 2017 09:33:45
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
const int VSIZE = 5000005;
deque < int > Q;
int N,K;
int a[VSIZE];
long long ans;


inline void Read()
{
    fin >> N >> K;
    for(int i = 1; i <= N; i++) {
        fin >> a[i];
    }
}

inline void ADD(int x)
{
    while(!Q.empty() && a[x] <= a[Q.back()]) Q.pop_back();
    Q.push_back(x);
}


inline void Solve()
{
    int i;
    for(i = 1; i <= K; i++) ADD(i);
    ans += a[Q.front()];
    for(i; i <= N; i++) {
        while(!Q.empty() && i - Q.front() >= K) Q.pop_front();
        ADD(i);
        ans += a[Q.front()];
    }
    fout << ans << "\n";
    fout.close();
}


int main()
{
    Read();
    Solve();
    return 0;
}