<aside> 💡
넣을 수 있는 파의 양에 대해 이분탐색
이후 최대한 파를 넣고 남은 양을 구하기
</aside>
#include <bits/stdc++.h>
#define FASTIO ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
using namespace std;
typedef long long int ll;
int n, m;
int a[1'000'001];
signed main()
{
FASTIO;
int mx = 0;
ll sum = 0;
cin >> n >> m;
for(int i = 0; i<n; i++){
cin >> a[i];
sum += a[i];
mx = max(mx, a[i]);
}
ll lo = 0, hi = mx+1;
while(lo+1<hi){
ll mid = lo+hi>>1;
ll cnt = 0;
for(int i = 0; i<n; i++){
cnt += a[i]/mid;
if(cnt>=m) break;
}
if(cnt>=m) lo = mid;
else hi = mid;
}
cout << sum-lo*m <<"\\n";
return 0;
}
남은 양을 구할 때 괜히 모듈러를 써서 몇 번 틀렸다.
파를 넣을 수 있는 대로 넣을 수 없기 때문에 모듈러가 정답이 아니다.