Cod sursa(job #2888880)

Utilizator fredtuxFlorin Dinu fredtux Data 11 aprilie 2022 22:01:32
Problema Deque Scor 5
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <fstream>
#include <vector>
#include <climits>
#include <iostream>

using namespace std;

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

long long minim(vector<int> v, int ii){
    int sz = v.size();
    long long min = LLONG_MAX;

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

    return min;
}

int main() {
    int n, k, i, ii, j, num;
    vector<int> v;
    vector<int> init;
    long long sum;

    fin >> n >> k;

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

    for (i = 0, ii = 0; i < k; ++i) {
        num = init[i];
        if (v.size() == 0) {
            v.push_back(num);
        } else {
            while (v.back() > num)
                v.pop_back();
            v.push_back(num);
        }
    }

    sum = minim(v, ii);

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

        num = init[i];
        if(ii == v.size()){
            v.push_back(num);
        } else {
            while(v.back() > num && v.size() > ii){
                v.pop_back();
            }

            v.push_back(num);
        }

        sum += minim(v, ii);
    }

    fout << sum;

    return 0;
}