Cod sursa(job #1156588)

Utilizator cosmin.pascaruPascaru Cosmin cosmin.pascaru Data 27 martie 2014 19:50:36
Problema Deque Scor 10
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);
        sum += (long long) q.front().x;
        if (q.front().poz == i-k) q.pop_front();


    }

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