Cod sursa(job #3167198)

Utilizator stefanpiturStefan Alexandru Pitur stefanpitur Data 10 noiembrie 2023 12:14:56
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <deque>

using namespace std;

deque<pair<int, int> > dq;

int main()
{
    FILE *fin, *fout;
    fin = fopen("deque.in", "r");
    fout = fopen("deque.out", "w");

    int n, k, i, x;
    long long sum;
    fscanf(fin, "%d %d", &n, &k);
    
    sum = 0;
    for (i = 0; i < n; i++) {
        fscanf(fin, "%d", &x);
        if (!dq.empty() && dq.front().second <= i - k) {
            dq.pop_front();
        }

        while (!dq.empty() && dq.back().first > x) {
            dq.pop_back();
        }
        dq.push_back(make_pair(x, i));

        if (i >= k - 1)
            sum = sum + 1LL * dq.front().first;
    }
    
    fprintf(fout, "%lld\n", sum);
    fclose(fin);
    fclose(fout);
    return 0;
}