Cod sursa(job #1792440)

Utilizator Dragne.Andrei11Dragne Andrei Dragne.Andrei11 Data 30 octombrie 2016 14:26:02
Problema Deque Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <cstdio>
#include <deque>
#define nmax 10000001

using namespace std;

deque<int>deck;
int main()
{
    freopen("deque.in", "r", stdin);
    freopen("deque.out", "w", stdout);
    int n, k, minim1, minim2, sum=0;

    scanf("%d%d", &n, &k);
    minim1=minim2=nmax;
    while(n)
    {
        int nr;
        scanf("%d", &nr);
        deck.push_back(nr);
        if(minim1>nr)
        {
            minim2=minim1;
            minim1=nr;
        }
        else
            if(minim2>nr)
                minim2=nr;
        if(deck.size()==k)
        {
            sum+=minim1;
            if(minim1==deck.front())
                minim1=minim2;
            deck.pop_front();
            if(minim1==deck.front())
                minim2=deck.back();
            else
                minim2=deck.front();
        }
        n--;
    }
    printf("%d\n", sum);

    return 0;
}