Cod sursa(job #2030758)

Utilizator rangal3Tudor Anastasiei rangal3 Data 2 octombrie 2017 10:48:53
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <deque>
#define in "deque.in"
#define out "deque.out"
#define N 5000005

using namespace std;

ifstream fin(in);
ofstream fout(out);

long long n,k,A[N],i,j;
long long S = 0;

deque<int> dq;

int main()
{
    fin>>n>>k;
    for(i=1; i<=n; ++i)
        fin>>A[i];

    for(i=1; i<=k; ++i)
    {
        while(!dq.empty() && A[dq.back()] >= A[i])
            dq.pop_back();

        dq.push_back(i);
    }

    S += A[dq.front()];

    for(i=k+1; i<=n; ++i)
    {
        while(!dq.empty() && A[dq.back()] >= A[i])
            dq.pop_back();
        dq.push_back(i);
        while(i-k >= dq.front())
            dq.pop_front();

        S += A[dq.front()];
    }
    fout<<S;
    fin.close(); fout.close();
    return 0;
}