1421. 나무꾼 이다솜

aj4941·2023년 9월 9일
0

https://www.acmicpc.net/problem/1421

특정 len 길이로 나무를 자를 때 나오는 묶음으로 얻는 value가 있고 자르는데 cost가 발생할 것이다.

이때, 나는 무조건 나오는 value - cost를 해당 len의 케이스에 더하도록 구성했는데 문제는 이 값이 음수가 나올 경우 선택하지 않는 것이 최적이라는 점이었다.

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    ll n, c, w; cin >> n >> c >> w;
    vector<ll> a(n);
    for (int i = 0; i < n; i++) cin >> a[i];

    ll ans = 0;

    for (ll L = 1; L <= 1e4; L++)
    {
        ll res = 0;
        for (int i = 0; i < n; i++)
        {
            ll value = (a[i] / L) * L * w;
            ll cost = ((a[i] - 1) / L) * c;
            res += max(0ll, value - cost);
        }

        ans = max(ans, res);
    }

    cout << ans;
}
profile
안녕하세요 aj4941 입니다.

0개의 댓글