Cod sursa(job #3351880)

Utilizator Teodor-CiprianNica Teodor-Ciprian Teodor-Ciprian Data 21 aprilie 2026 22:56:20
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
class SlidingWindowMin {
    int windowSize;
    deque<int> dq;

public:
    SlidingWindowMin(int k) : windowSize(k) {}
    vector<int> solve(const vector<int>& arr) {
        vector<int> results;
        for (int i = 0; i < arr.size(); i++)
            {
            if (dq.size()>0 && dq.front() <= i - windowSize)
            {
                dq.pop_front();
            }

            while (dq.size()>0 && arr[dq.back()] >= arr[i])
            {
                dq.pop_back();
            }

            dq.push_back(i);

            if (i >= windowSize - 1)
            {
                results.push_back(arr[dq.front()]);
            }
        }
        return results;
    }
};

int main() {
    int n, k,sum=0;
    fin >> n >> k;
    vector<int> a(n);
    for (int i = 0; i < n; i++)
    {
        fin >> a[i];
    }
    SlidingWindowMin swm(k);
    vector<int> mins = swm.solve(a);
    for (int val:mins)
    {
        sum+=val;
    }
    fout<<sum;
    return 0;
}