길이가 다른 파로 입력값에 따라 최대의 파길이로 파닭만드는 문제임.
ZeroDivision이 계속 났었는데 ll lo의 값을 0부터 시작을 해버려서 틀렸었음.
길이는 1부터 시작할 수 있게 함.
#include <iostream>
#include <cstring>
using namespace std;
#define endl "\n"
#define ll long long
ll s, c, ls[1000002], ret = -1, sum = 0;
bool Check(ll mid)
{
ll cnt = 0;
for (int i = 0; i < s; ++i) cnt += (ls[i] / mid);
return cnt >= c;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> s >> c;
for (int i = 0; i < s; ++i)
{
cin >> ls[i]; sum += ls[i];
}
ll lo = 1; ll hi = 1e9;
while (lo <= hi)
{
ll mid = (lo + hi) / ((ll)1 * 2);
if (Check(mid))
{
lo = mid + 1;
ret = mid;
}
else hi = mid - 1;
}
cout << sum - ret * c << endl;
return 0;
}
```