#include<stdio.h>
int main(){
int K, N;
int arr[10001];
long long max=0;
int cnt;
int i,j;
int ans=0;
long long low, mid;
scanf("%d %d", &K, &N);
for(i=0;i<K;i++){
scanf("%d", &arr[i]);
if(max<arr[i])
max = arr[i];
}
low = 1;
while(low<=max){
cnt = 0;
mid = (low + max) / 2;
for(j=0;j<K;j++)
cnt += arr[j]/mid;
if(cnt<N) //랜선의 길이가 더 작아야되면
max = mid - 1;
else{ // 랜선의 길이가 더 커야되면 or 딱맞으면
low = mid + 1;
if(ans<mid)
ans = mid;
}
}
printf("%d", ans);
return 0;
}
using binary search method.
had multiple failures due to using int instead of long long. (error when numbers are bigger than integer's range)
'프로그래밍 > C' 카테고리의 다른 글
baekjoon 1874 & runtime error: integer overflow (0) | 2022.01.12 |
---|---|
baekjoon 1920 w/ binary search & merge sort (0) | 2022.01.11 |
baekjoon 2751 w/ merge sort (0) | 2022.01.11 |
baekjoon 1436 w/ brute force (0) | 2022.01.10 |
baekjoon 1181 w/ mergesort (0) | 2022.01.09 |