앞 문제와 같다. long long 자료형으로 써야 틀렸습니다를 안만난다.
#include<iostream>
#include<algorithm>
using namespace std;
int N, K;
long long lan[10001];
bool condition(int mid) {
int sum = 0;
for (int i = 0; i < N; i++) {
sum += lan[i] / mid;
}
if (sum >= K) return true;
return false;
}
int main() {
cin >> N >> K;
long long left = 1;
long long right = 0;
for (int i = 0; i < N; i++) {
cin >> lan[i];
right = max(lan[i], right);
}
long long ans;
while (left <= right) {
long long mid = (left + right) / 2;
if (condition(mid)) {
ans = mid;
left = mid + 1;
}
else {
right = mid - 1;
}
}
cout << ans << '\n';
return 0;
}
'Programming > BOJ' 카테고리의 다른 글
[백준/Python] 백준 1697번 숨바꼭질 (0) | 2021.01.03 |
---|---|
[백준/C++] 11724번: 연결 요소의 개수 (DFS) (0) | 2020.12.03 |
[백준/C++] 2805번: 나무 자르기 (이분탐색) (0) | 2020.12.02 |
[백준/C++] 2661번: 좋은수열 (DFS, 백트랙킹) (0) | 2020.11.26 |
[백준/C++] 1929번: 소수 구하기 (여러가지 소수 판별법) (0) | 2020.11.25 |