Cod sursa(job #1780086)

Utilizator Vally77FMI Calinescu Valentin Gelu Vally77 Data 15 octombrie 2016 20:40:39
Problema Deque Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#include <deque>
#include <stack>
using namespace std;
ifstream ka("deque.in");
ofstream ki("deque.out");

struct element
{
    int val, ord;
};

deque <element> coada;
stack <element> stivatemp;

int n, k, x;
long long suma;


int main()
{
    ka >> n >> k >> x;
    element el;
    el.val = x;
    el.ord = 1;
    coada.push_back(el);
    for(int i = 2; i <= n; i++)
    {
        ka >> x;
        element elo;
        elo.val = x;
        elo.ord = i;
        while(!coada.empty() && x < coada.front().val)
            coada.pop_front();
        while(!coada.empty() && x > coada.front().val)
        {
            stivatemp.push(coada.front());
            coada.pop_front();
        }
        coada.push_front(elo);
        while(!stivatemp.empty())
        {
            coada.push_front(stivatemp.top());
            stivatemp.pop();
        }
        if(i >= k)
        {
            while(i - coada.front().ord + 1 > k)
                coada.pop_front();
            suma += coada.front().val;
        }
    }
    ki << suma;
}