Cod sursa(job #3338255)

Utilizator NeamtuMateiNeamtu Matei-Constantin NeamtuMatei Data 1 februarie 2026 21:57:35
Problema Deque Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;

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

const int MAXN = 5e6;

int n, k;
int v[MAXN+1];
deque<int> dq;

int main() {
    ios_base::sync_with_stdio(false);
    in.tie(0); out.tie(0);

    in >> n >> k;
    for (int i = 1; i <= n; i++)
        in >> v[i];

    for (int i = 1; i <= k; i++) {
        while (!dq.empty() && v[dq.back()] > v[i])
            dq.pop_back();

        dq.push_back(i);
    }

    long long suma = 0;
    for (int i = k + 1; i <= n; i++) {
        suma += v[dq.front()];
        if (dq.front() == i - k) // daca maximul secventei a ajuns la capatul din stanga ii dam pop
            dq.pop_front();      // (iese din secventa de lungime k)

        while (!dq.empty() && v[dq.back()] > v[i])
            dq.pop_back();

        dq.push_back(i);
    }

    out << suma + v[dq.front()];

    return 0;
}