Cod sursa(job #1156594)

Utilizator cosmin.pascaruPascaru Cosmin cosmin.pascaru Data 27 martie 2014 19:53:15
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <cstdio>
#include <deque>


using namespace std;

struct punct
{
    int x, poz;
};
deque <punct> q;
int main()
{
    int n, k, x;
    long long sum = 0;
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);

    scanf("%d %d", &n, &k);
    for (int i = 1; i < k; ++i)
    {
        scanf("%d", &x);

        punct aux;
        aux.x = x;
        aux.poz = i;


        while ( !q.empty() && x < q.back().x )
                q.pop_back();

        q.push_back(aux);
    }

    for (int i = k; i <= n; ++i)
    {
        scanf("%d", &x);

        punct aux;
        aux.x = x;
        aux.poz = i;

        while ( !q.empty() && x < q.back().x )
                q.pop_back();

        q.push_back(aux);

        if (q.front().poz == i-k) q.pop_front();
        sum += (long long) q.front().x;

    }

    printf("%lld\n", sum);
    return 0;
}