Cod sursa(job #3124698)

Utilizator DemonulCristian Razvan Gavrilescu Demonul Data 29 aprilie 2023 21:39:41
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <fstream>
#include <queue>
using namespace std;
ifstream cin("deque.in");
ofstream cout("deque.out");
deque<long long>dq;
int v[5000002];
int main()
{
    int n , k;
    cin >> n >> k;
    long long suma = 0;
    for(int i = 1; i <= n; ++ i)
    {
        cin >> v[i];
        while(dq.front() + k <= i && dq.empty() == false)
        {
            dq.pop_front();
        }

        if(dq.empty() == false)
        {
            if(v[dq.front()] > v[i])
            {
                dq.push_front(i);
            }
            else
            {
                if(v[dq.back()] <= v[i])
                {
                    dq.push_back(i);
                }
                else
                {
                    while(dq.empty() == false && v[dq.back()] > v[i])
                    {
                       dq.pop_back();
                    }
                    dq.push_back(i);
                }
            }
        }
        else
        {
            dq.push_front(i);
        }
        if(i >= k )
        {
            suma += v[dq.front()];
        }
    }
    cout << suma;
    return 0;
}