lobo_prix   1년 전

※코드가 좀 많이 길어서 채점번호만 적습니다.

채점번호 10665829 와 10665827은 212번째 줄의 sort를 람다로 한번 감싸서 호출하느냐, 아니냐의 차이가 있고 나머지 코드는 모두 동일합니다.

그런데 전자는 맞고, 후자는 런타임에러가 뜹니다.

후자의 코드를 1708 볼록껍질문제에 제출해본 결과 AC를 받았는데, 왜 유독 이 문제에서만 런타임에러가 뜨는지 당황스럽습니다.

람다함수로 감싸는것 뿐만 아니라 그냥 함수로 따로 빼서 호출, 인라인함수로 호출 등등 일단 함수를 호출하는 형태면 AC가 뜨는데,

저렇게 코드안에 직접 추가해주면 런타임에러가 나는걸 확인했습니다.

Undefined Behavior이 있을만한 부분도 한번 체크해봤지만 없는것 같고,,,

혹시 라이브러리에 문제가 있다면 ACM전까지 고쳐야할텐데, 불안하네요. 도움 좀 부탁드립니다 ㅜㅜ

chogahui05   1년 전

이게 Vaild한 Input인지 아닌지는 잘 모르겠지만..

문제 조건을 보면. 

(1) 두 볼록 다각형의 넓이는 0이 아니다. 

(2) 볼1의 꼭짓점은 볼2에 있지 않고, 반대 역시 마찬가지이다.

이런 걸로 봐서는 볼1과 볼2가 겹치지 않는 경우도 인풋으로 들어올 수 있다는 소리인데.. 하나가 통과된다는 건 의아하긴 하네요..

chogahui05   1년 전

정확한 RTE의 원인은

10665829건 10665827이건.. 공통적으로, vtx에 원소가 없음에도 bind를 시키는, 아마 소스 코드로 보면 212번째 줄일 겁니다.

이러한 부분 때문일 것으로 보입니다. _1과 _2를 비교해야 하는데 비어 있으면 애초에 Compare가 가능할지는.. 모르겠고요.

그 때문에 RTE가 뜨는 게 맞고요.


lobo씨 코드로 Test를 해 보니까, 10665829는 운 좋게 피해간 것으로 보이네요. 

둘 다 전처리로 그 줄을 수행하는 걸 컷하시면 RTE는 안 뜰 겁니다.


lobo_prix   1년 전

와 그렇네요 생각도 못했는데...

교집합이 공집합이면 min_element도 그렇고 assert가 나네요 ㄷㄷ

10665829는 틀왜맞이군요 ㅋㅋㅋㅋㅋㅋㅋ

몇시간동안 고민했던건데 코드보고 30분만에 반례찾아버리시다니...너무나 :god:입니다

:fan: :fan: :fan: :fan:

댓글을 작성하려면 로그인해야 합니다.