Cod sursa(job #2548257)

Utilizator AdryanR8iurian adrian razvan AdryanR8 Data 16 februarie 2020 14:04:29
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int N, K, sum;
int A[5000001];
int ST[5000001], DR[5000001];

int main() {
    in >> N >> K;
    for (int i=1; i<=N; ++i) {
        in >> A[i];
        if (i%K == 1)
            ST[i] = A[i];
        else
            ST[i] = min(ST[i-1], A[i]);
    }
    int ind = N;
    DR[ind] = A[ind];
    --ind;
    while (ind%K != 0) {
        DR[ind] = min(DR[ind+1], A[ind]);
        --ind;
    }
    for (int i=ind; i>=1; --i) {
        if (i%K == 0)
            DR[i] = A[i];
        else
            DR[i] = min(DR[i+1], A[i]);
    }
    int st = 1;
    int dr = K;
    while (dr <= N) {
        int min_curent = min(DR[st], ST[dr]);
        sum += min_curent;
        ++st;
        ++dr;
    }
    out << sum;
    return 0;
}