
코드
#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;
}'C++ > 백준 C++' 카테고리의 다른 글
| C++ 18352 특정 거리의 도시 찾기 [최단 거리, BFS] (0) | 2024.10.23 |
|---|---|
| C++ 10819 차이를 최대로 [백트래킹, 브루트포스] -> 필수 공부 (0) | 2024.10.23 |
| C++ 2805 나무 자르기 [이분 탐색], 범위 long long 사용 (0) | 2024.10.23 |
| C++ 9935 문자열 폭발 [문자열] (0) | 2024.10.22 |
| C++ 13458 시험 감독 [연산] (0) | 2024.10.22 |