1866 : 택배

풀이

,

코드

#include <cstdio>
#include <algorithm>
using namespace std;

int n, t, h, a[3003], dp[3003];

int main() {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
    scanf("%d %d", &t, &h);

    sort(a + 1, a + 1 + n);

    for (int i = 1; i <= n; i++) {
        dp[i] = dp[i - 1] + a[i] * t;
        int cst = h;
        for (int j = i; j; j--) {
            cst += (a[(i + j + 1) / 2] - a[j]) * t;
            dp[i] = min(dp[i], dp[j - 1] + cst);
        }
    }

    printf("%d ", dp[n]);

    return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-06-24 22:03

Read more posts by this author