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;
}