Cod sursa(job #2728533)

Utilizator gabrielanideleaNidelea Gabriela-Andreea gabrielanidelea Data 23 martie 2021 13:13:46
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int dendq[6000000],v[6000000], x, n, k, bk, fr = 1;
long long s;
int main()
{
    f>>n>>k;
    for(int i = 0; i < n; i++)
        f>>v[i];

    for(int i = 0; i < n; i++)
    {
        while (v[i] <= v[dendq[bk]]  && (fr <= bk)) // cat timp v[i] este mai mic sau egal decat v[ultimul elem din dendq si fr<=bk
            bk=bk-1; //decrementam indicele ultimului element
        bk=bk+1; //cresc indicele bk cu 1 pt urmatoarea atribuire
        dendq[bk] = i; //introd in dendq[bk] indicele elem maxim
        if (dendq[fr] == i - k)
            fr=fr+1;
        if(i+1>= k) //dupa ce am trecut de elem de pe pozitia k
            s = s+  v[dendq[fr]]; // adaug elem minim in suma

    }
    g<<s;
    return 0;
}