반응형
-문제
-코드
#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;
vector<int> a;
int calcul(int n)
{
int cnt = 1;
int pos = a[0];
for (int i = 1; i < a.size(); i++)
{
if (a[i] - pos >= n)
{
cnt++;
pos = a[i];
}
}
return cnt;
}
int main()
{
int n, m, tmp, res = 0;
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++)
{
scanf("%d", &tmp);
a.push_back(tmp);
}
sort(a.begin(), a.end());
int rt = a[n-1], lt = 1, mid;
while (lt <= rt)
{
mid = (rt + lt) / 2;
if (calcul(mid) >= m)
{
lt = mid + 1;
res = mid;
}
else
{
rt = mid - 1;
}
}
printf("%d", res);
return 0;
}
반응형
'이론 > 코딩테스트' 카테고리의 다른 글
[백준] 3184번 양 (BFS) (0) | 2022.08.26 |
---|---|
[백준] 1388번 바닥 장식 (BFS) (0) | 2022.08.26 |
[백준] 16401번 과자 나눠주기 (이분 탐색) (0) | 2022.08.25 |
[백준] 2512번 예산 (이분 탐색) (0) | 2022.08.25 |
[백준] 10816번 숫자카드2 (이분 탐색) (0) | 2022.08.25 |