Cod sursa(job #3031135)

Utilizator Nasa1004Ema Nicole Gheorghe Nasa1004 Data 18 martie 2023 20:17:34
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include <deque>
//#define int long long int

using namespace std;
ifstream cin("deque.in");
ofstream cout("deque.out");

deque<int> dq;
int v[5000001];
int32_t main()
{
    int n, k;
    long long int sum=0;
    cin>>n>>k;
    for(int i=0; i<n; i++) cin>>v[i];

    for(int i=0; i<n; i++)
    {
        while(!dq.empty() && v[dq.back()]>=v[i]) //cand ult nr adaugate sunt mai mari decat ce vom adauga acum,
            dq.pop_back(); //le scoatem ca nu ne vor interesa niciodata

        dq.push_back(i); //adaugam nr, ca sa aiba decoada cv intotdeauna

        if(dq.front()<=i-k) //asta inseamna ca nu s-a mai scos vreun nr din st de mult si sunt mai mullt de ult
            dq.pop_front(); //k, deci trebuie sa il scoatem

        if(i>=k-1) //aici adunam la suma intot ult min, are e cel mai din st nr din decoada
            sum+=v[dq.front()];
    }
    cout<<sum;
    return 0;
}
/*
9 3
-7 9 2 4 -1 5 6 7 1
*/