C++/백준 C++
C++ 1654 랜선 자르기 [이분 탐색] -> 범위 체크, long long 사용
CE : 하랑
2024. 10. 23. 15:44
코드
#include <iostream>
#include <vector>
#include <algorithm>
long long SerchCount(std::vector<long long>& _nums, long long _M)
{
long long st = 1;
long long end = _nums[_nums.size() - 1];
long long Len = 0;
while (st <= end)
{
long long Sum = 0;
long long Mid = (st + end) / 2;
for (int i = 0; i < _nums.size(); i++)
{
if (_nums[i] >= Mid)
{
Sum += (_nums[i]/Mid);
}
}
if (Sum < _M)
{
end = Mid - 1;
}
else
{
Len = Mid;
st = Mid + 1;
}
}
return Len;
}
int main()
{
std::vector<long long> nums;
int N;
long long M;
std::cin >> N >> M;
nums.resize(N);
for (int i = 0; i < N; i++)
{
std::cin >> nums[i];
}
std::sort(nums.begin(), nums.end());
long long result = SerchCount(nums, M);
std::cout << result;
return 0;
}