반응형
-문제
틀렸습니다 나왔던 이유 : 자료형 실수
1 <= 랜선의 길이<= 2^31 - 1 이고, 랜선길이 두개로 mid(H)값을 계산하기 때문에
int lt, rt, H; -> long long lt, rt, H;
으로 수정하여 통과했다.
-코드
#include<stdio.h>
#include<vector>
using namespace std;
vector<int> a;
int n;
bool cal(int h)
{
long long cnt = 0;
for (int i = 0; i < a.size(); i++)
{
cnt += a[i] / h;
}
if (cnt >= n) return true;
else return false;
}
int main()
{
int k, tmp, max=0;
scanf("%d %d", &k, &n);
for (int i = 0; i < k; i++)
{
scanf("%d", &tmp);
a.push_back(tmp);
if (max < a[i]) max = a[i];
}
int res=0;
long long lt, rt, H;
lt = 0;
rt = max;
while (lt<=rt)
{
H = (lt + rt) / 2;
if (H == 0)
{
res = rt;
break;
}
if (cal(H))
{
res = H;
lt = H + 1;
}
else
{
rt = H - 1;
}
}
printf("%d", res);
return 0;
}
반응형
'이론 > 코딩테스트' 카테고리의 다른 글
[백준] 11399번 ATM (삽입정렬) (0) | 2022.07.31 |
---|---|
[백준] 2468번 안전 영역 (BFS) (0) | 2022.07.31 |
[백준] 2751번 수 정렬하기2 (병합정렬) (0) | 2022.07.31 |
[백준] 2805번 나무자르기 (이분탐색) (0) | 2022.07.30 |
[백준] 1920번 수 찾기 (이분탐색) (0) | 2022.07.30 |