Cod sursa(job #2258893)

Utilizator ValentinSavoiuFMI Savoiu Valentin-Marian ValentinSavoiu Data 12 octombrie 2018 14:04:55
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <deque>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
struct element {
    int poz, val;
}e,first,last;
long long sol;
deque <element> Deq;
int N, K, i, x;
int main()
{
    f>>N>>K;
    for(i = 1;i <= K;++i) {
        f>>x;
        e.poz = i;
        e.val = x;
        while(!Deq.empty()) {
            first = Deq.front();
            if(e.val <= first.val) Deq.pop_front();
            else break;
        }
        Deq.push_front(e);
    }
    last = Deq.back();
    sol = sol + 1LL * last.val;
    for(i = K+1;i <= N;++i) {
        f>>x;
        e.poz = i;
        e.val = x;
        while(!Deq.empty()) {
            first = Deq.front();
            if(e.val <= first.val) Deq.pop_front();
            else break;
        }
        Deq.push_front(e);
        last=Deq.back();
        if(i - last.poz >= K) Deq.pop_back();
        last = Deq.back();
        sol = sol + 1LL * last.val;
    }
    g<<sol;
    return 0;
}