Cod sursa(job #2888894)

Utilizator fredtuxFlorin Dinu fredtux Data 11 aprilie 2022 22:20:21
Problema Deque Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.2 kb
#include <fstream>
#include <climits>
#include <iostream>

using namespace std;

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

long long minim(const int v[], unsigned int ii, unsigned int sz) {
    long long min = LLONG_MAX;

    for (; ii < sz; ++ii) {
        if (v[ii] < min)
            min = v[ii];
    }

    return min;
}

int main() {
    int num;
    unsigned int ii, i, j, n, k;
    long long sum;

    fin >> n >> k;

    int v[n], init[n];

    for (i = 0; i < n; ++i) {
        fin >> num;
        init[i] = num;
    }

    for (i = 0, ii = 0, j = 0; i < k; ++i) {
        num = init[i];
        if (j == 0) {
            v[0] = num;
            ++j;
        } else {
            while (v[j - 1] > num)
                --j;

            v[j] = num;
            ++j;
        }
    }

    sum = minim(v, ii, j);

    for (++ii; i < n; ++i) {
        if (init[i - k] == v[ii])
            ++ii;

        num = init[i];
        if (ii == j) {
            v[j] = num;
            ++j;
        } else {
            while (v[j - 1] > num && j > ii) {
                --j;
            }

            v[j] = num;
            ++j;
        }

        sum += minim(v, ii, j);
    }

    fout << sum;

    return 0;
}