Cod sursa(job #2887507)

Utilizator SteanfaDiaconu Stefan Steanfa Data 9 aprilie 2022 18:53:08
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
	
#include <fstream>
using namespace std;
class Asd
{
public:
    long long  first, second;
};
Asd a[5000001];
long coada = 2500000, cap = 2500000;
void pushFront(const long &x, const int &c)
{
    a[++cap].first = x;
    a[cap].second = c;
}
void pushBack(const long &x, const int &c)
{
    a[--coada].first = x;
    a[coada].second = c;
}
void popFront()
{
    cap--;
}
void popBack()
{
    coada++;
}
Asd back() { return a[coada + 1]; }
bool gol() { return (cap == coada) ? 1 : 0; }
Asd front() { return a[cap]; }
long long k = 0, n = 0, x, mm = 0;
 
int main()
{
 
    ofstream cout("deque.out");
    ifstream cin("deque.in");
    cin >> n >> k;
 
    for (size_t i = 0; i < n; i++)
    {
        cin >> x;
        if (i >= k)
        {
            mm += back().first;
        }
        while (!gol() and front().first > x)
        {
            popFront();
        }
        pushFront(x, i);
 
        if (!gol() and back().second == i - k)
        {
            popBack();
        }
    }
 
    cout << mm + back().first;
    return 0;
}