catniz   7년 전

'런타임에러==배열 인덱스 접근 오류'라고 생각해서 인덱스들 먼저 범위 초과하지않는 지 확인해 봤는데 찾지 못했습니다.


도움말에 보니 런타임에러에 허용되지 않은 함수 사용도 포함되던데, 이게 어떤 의미인지 모르겠어서 더 시도해 보지 않고 질문합니다.


일단 알고리즘은 세가지로 나뉘는데요, 주석으로 표시되어 있습니다.

먼저 벡터 v에 모든 두 점 쌍의 중점을 알기 위한 x, y와  정사각형이 만들어 졌을 때 계산을 쉽게 하기 위해 대각선 벡터를 구해 저장합니다.

그 다음에 벡터 v를 정렬하고

정렬된 v를 보며 앞에서 부터 조건에 맞는 점들을 찾아 답을 계산합니다.


제가 설명을 잘 했는지 모르겠네요.

저 스스로 생각하기에, 런타임 에러가 나기전에 계속 struct의 연산자 오버로딩 하는 곳에서 컴파일 에러가 났었는데,  그 부분이 문제가 있지 않을까 짐작만 해봤습니다.


그 외에는 잘 모르겠어요.

kiswiss777   7년 전

저는 대부분의 에러가 배열할당오바거나 메모리문제였어요... 한번더 살펴보시길..

yukariko   7년 전

우선 원인은 v 배열의 메모리 초과입니다.

실제로 COORD를 모두 short 로 바꿔주면 런타임에러 대신 시간초과를 받습니다.

또한, try / catch구문으로 테스트한 결과, v.push_back()에서 문제가 발생했음을 확인하였습니다.


catniz   7년 전

헛.... 메모리초과가 아니라 런타임 에러로 뜨는군요....

생각해봤을땐 v에 최대 900만개 저장이라 생각했고 메모리초과만 보면 된다 생각해서 걍 넘겼는데 그게 문제였군요....


이런.... 그럼 접근을 좀 다르게 하는 것이 좋을까요? 으으


답변 감사합니다! 한번 더 생각해 볼게요! 

catniz   7년 전

ㅎ힌트....좀 주실수 있으면....ㅇ아

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