반응형
문제링크 : 1654번: 랜선 자르기 (acmicpc.net)
1654번: 랜선 자르기
첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그
www.acmicpc.net
> 풀이
간단한 이분탐색 문제입니다
#include <bits/stdc++.h>
using namespace std;
long long K, N;
long long arr[10000];
long long bSearch(long long end) {
long long start = 0;
long long sum = 0;
long long len = (start + end) / 2;
while (start <= end) {
sum = 0;
len = (start + end) / 2;
if (len == 0)
break;
for (int i = 0; i < K; i++) {
sum += arr[i] / len;
}
if (sum < N) {
end = len - 1;
}
else {
start = len + 1;
}
}
return end;
}
int main(void)
{
scanf("%lld %lld", &K, &N);
for (int i = 0; i < K; i++)
scanf("%lld", &arr[i]);
sort(arr, arr + K);
printf("%lld", bSearch(arr[K - 1]));
return 0;
}
반응형
'알고리즘 (백준) > BOJ 길라잡이 (1)' 카테고리의 다른 글
백준 2805 (나무 자르기) / C++ (0) | 2021.05.13 |
---|---|
백준 2512 (예산) / C++ (0) | 2021.05.12 |
백준 1012 (유기농 배추) / C++ (0) | 2020.11.06 |
백준 11047 (동전 0) / C++ (0) | 2020.11.06 |
백준 11053 (가장 긴 증가하는 부분수열) / C++ (0) | 2020.11.05 |