Cod sursa(job #2631274)

Utilizator richardionelRichard Ionel richardionel Data 29 iunie 2020 17:18:39
Problema Deque Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("deque.in");
ofstream fout("deque.out");

long long suma = 0;
int n,k;
int vect[5000010];
deque <int> coada;

int main()
{
    fin >> n >> k;
    for (int i = 1; i <= n; i++)
        fin >> vect[i];

    for (int i = 1; i <= n; i++){

        while(!coada.empty()){ // am sters toate numerele mai mari decat elementul
            if(vect[i] > coada.back())
                break;
            coada.pop_back();
        }
        coada.push_back(vect[i]); // il punem la sfarsit (adica o sa se formeze un fel de sir crescator)

        if(coada.front() == vect[i - k]) // in caz ca e egal nu are relevanta sa il avem intrucat nu mai conteaza pentru urmatoarele elemente "ce vor venii"
            coada.pop_front();
        if(i >= k)
            suma+=coada.front(); // mereu primul element din coada va fi cel mai mic
    }
    fout << suma;

}