개발/C++
[BOJ] 1654 - 랜선 자르기
차파랑
2021. 12. 30. 20:13
#include<stdio.h>
int main(){
int k, n;
scanf("%d %d", &k, &n);
long long int* lengths = new long long int[k];
long long int sum = 0;
for(int i = 0; i < k; i++){
scanf("%d", &lengths[i]);
sum += lengths[i];
}
long long int maxLength = sum / n;
long long int minLength = 1;
long long int result = 0;
while(maxLength >= minLength){
long long int mid = (maxLength + minLength) / 2;
long long int sum = 0;
for(int i = 0; i < k; i++){
sum += lengths[i] / mid;
}
if(sum < n){
maxLength = mid - 1;
} else {
result = mid;
minLength = mid + 1;
}
}
printf("%d\n", result);
}