Cod sursa(job #2543471)

Utilizator VanaMarcVana Marc VanaMarc Data 11 februarie 2020 10:28:31
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>
#define INF 2000000000
using namespace std;

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

int N, M, A[5000005], ST[5000005], DR[5000005];

int main()
{
    fi >> N >> M;
    for (int i = 1; i <= N; ++i)
        fi >> A[i];
    ST[0] = INF;
    for (int i = 1; i <= N; ++i)
        if (i % M == 1)
            ST[i] = A[i];
        else
            ST[i] = min(ST[i - 1], A[i]);
    DR[N + 1] = INF;
    for (int i = N; i >= 1; --i)
        if (i % M == 0 || i == N)
            DR[i] = A[i];
        else
            DR[i] = min(DR[i + 1], A[i]);
    long long sum = 0;
    for (int i = 1; i <= N - M + 1; ++i)
        sum += min(DR[i], ST[i + M - 1]);
    fo << sum;
    fi.close();
    fo.close();
    return 0;
}