지우너
[코드트리] 정수 분배하기 C++ 본문
문제
코드
#include <iostream>
using namespace std;
const int MAX_N = 10000;
int n, m;
int arr[MAX_N];
bool IsPossible(int k){
int cnt =0;
for(int i=0; i<n; ++i){
cnt+=arr[i]/k;
}
return cnt>=m;
}
int main() {
cin >> n >> m;
for(int i=0; i<n; ++i){
cin >> arr[i];
}
int left=1, right=100000;
int ans=0;
while(left<=right){
int mid = (left+right)/2;
if(IsPossible(mid)){
left=mid+1;
ans = max(ans, mid);
}
else right = mid-1;
}
cout << ans << '\n';
return 0;
}
'Problem Solving' 카테고리의 다른 글
[코드트리] 최소 통과 시간 C++ (0) | 2024.08.30 |
---|---|
[코드트리] 이차원 배열의 오름차순 정리 C++ (0) | 2024.08.29 |
[코드트리] 선분 위의 점 C++ (0) | 2024.08.27 |
[코드트리] 숫자의 개수 C++ (0) | 2024.08.27 |
[코드트리] 숫자 빠르게 찾기 C++ (0) | 2024.08.27 |