Cod sursa(job #2264709)

Utilizator alex2kamebossPuscasu Alexandru alex2kameboss Data 20 octombrie 2018 11:18:08
Problema Deque Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include <vector>
#include <cstdio>

using namespace std;

vector <int> q;
int a[5000005];
int n,k;
long long sum;

int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);

    cin>>n>>k;

    for(int i=0;i<k;++i)
    {
        cin>>a[i];

        while(q.size() && a[q.back()]>=a[i])
            q.pop_back();

        q.push_back(i);
    }
    sum+=a[q.front()];

    for(int i=k;i<n;++i)
    {
        cin>>a[i];

        while(q.size() && a[q.back()]>=a[i])
            q.pop_back();

        q.push_back(i);

        while(q.back()-q.front() >= k)
            q.erase(q.begin());

        sum+=a[q.front()];
    }

    cout<<sum;
    return 0;
}