Cod sursa(job #1404770)

Utilizator 4ONI2015oni2015 4ONI2015 Data 28 martie 2015 15:36:54
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>
#define ll long long

using namespace std;
deque<ll>q;
ll v[5000005], i, n, k, sol;
int main()
{
    freopen("deque.in", "r", stdin);
    freopen("deque.out", "w", stdout);
    scanf("%lld%lld", &n, &k);
    for(i = 1; i < k; i++)
    {
        scanf("%lld", &v[i]);
        while(q.size() && v[q.back()] >= v[i])
            q.pop_back();
        q.push_back(i);
    }
    for(; i <= n; i++)
    {
        scanf("%lld", &v[i]);
        while(q.size() && v[q.back()] >= v[i])
            q.pop_back();
        q.push_back(i);
        if(i - q.front() == k)
            q.pop_front();
        sol += v[q.front()];
    }
    printf("%lld\n", sol);
    return 0;
}