작성
·
232
0
http://boj.kr/3ab33c32342c4bb69dab00eeab01852a
작성해 본 코드입니다.
혹시
이분탐색 부분인
while(lo<=hi){
mid = (hi+lo)/2;
if(check(mid)){
hi = mid - 1;
h_max = mid;
} ~~
에서
h_max = mid
부분을
h_max = min(mid, h_max);
로 바꾸게 되면 min을 사용해서 최솟값을 잡을 수 있을 줄 알았지만 "틀렸습니다"가 되어 질문드립니다.
( 예제는 전부 맞다고 나옵니다)
감사합니다.
답변 1
1
안녕하세요 상현님 ㅎㅎ
h_max에 처음에 최댓값이 올바르게 들어가지 않아서 그렇습니다.
h_max = 1e18+4;
ll hi =1e18;
lo = 1;
ll mid = 0;
//cout<<"h_max : "<<h_max<<"\n";
while(lo<=hi){
mid = (hi+lo)/2;
//cout<<"hi : "<<hi<<", lo : "<<lo<<" mid : "<<mid<<"\n";
//cout<<"h_cur : "<<h_cur<<"\n";
if(check(mid)){
hi = mid - 1;
h_max = min(h_max, mid);
이 문제는 최대범위가 크기 때문에 좀 더 큰 값으로 잡아주어야 합니다.
이렇게 해보시겠어요?
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.