Cod sursa(job #3324271)

Utilizator Andreea3425Diaconu Andreea Andreea3425 Data 21 noiembrie 2025 21:02:51
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>

using namespace std;

#define N 5000000

int v[N+1], deq[N+1];
int siz, fir;

int push_back(int val){
    if (siz == N)
        return 0;

    deq[(fir + siz) % N] = val;
    siz++;
    return 1;
}

int pop_front(){
    if (siz == 0)
        return 0;

    fir++;
    if (fir == N)
        fir = 0;

    siz--;
    return 1;
}

int pop_back(){
    if (siz == 0)
        return 0;

    siz--;
    return 1;
}

int front(){
    if (siz > 0)
        return deq[fir];
    return -1;
}

int back(){
    if (siz > 0)
        return deq[(fir + siz - 1) % N];
    return -1;
}

int main()
{
    ifstream cin ("deque.in");
    ofstream cout ("deque.out");

    int n, k, i;
    long long int s;

    cin >> n >> k;
    for (i=0; i<n; i++)
        cin >> v[i];

    s = 0;
    for (i=0; i<n; i++){
        while (siz > 0 && v[i] < v[back()])
            pop_back();
        while (siz > 0 && i-k+1 > front())
            pop_front();
        push_back(i);

        if (i + 1 >= k)
            s += v[front()];
    }

    cout << s << '\n';
    return 0;
}