ploffer11   5년 전

테스트 케이스가 약한 것 같지는 않은데,

if (arr[ index ] > k) cnt ++; 같은 단순한 코드이고, C/C++이 너무 빠른 탓에,

10만 * 10만이 1.8초 안에 돌아가 통과되고 있습니다. 

제 코드는 (정해인지는 모르겠습니다) 세그트리에 정렬된 리스트를 가지고, 각각의 리스트를 Merge한 후, (Merge Sort와 동일) 각각의 리스트에서 UpperBound로 이분탐색을 사용했고, 

파이썬 3 3.6초, 파이파이3 2.3초로 정답을 받았습니다.

시간 제한을 1초로 줄여도 문제의 의도와 어긋나지 않을 것 같습니다.

kipa00   5년 전

제한을 50만에서 100만으로 늘리는 것이 더 타당하다고 생각합니다.

ploffer11   5년 전

무슨 제한을 말하는 것인가요?

kipa00   5년 전

N 제한이요.

1초로 줄여도, 극한의 최적화를 하면 시간을 반으로 줄여서 통과될 수도 있습니다.

이것이 문제의 의도가 아니라면(그리고 아니라고 생각합니다), N 제한을 50만에서 100만으로 늘려 의도하지 않은 풀이를 확실히 막는 것이 더 좋다고 생각합니다.

ploffer11   5년 전

지금 N제한은 10만입니다. 

N이 20만이나 30만정도로 늘려졌을 때, 문제에서 지향하고 있는 풀이에서 TLE가 나지 않는다면 N제한을 늘리는 것도 좋을 수 있겠네요.

startlink   5년 전

재채점했습니다.

startlink   5년 전

수정했습니다.

djm03178   5년 전

결과적으로 N제한을 늘리지는 않으셨지만 어떤 문제든 입력 제한을 늘리는 것은 좋지 않은 것 같습니다. 새로운 문제를 만드는 거라면 상관 없지만, 기존의 코드에 대해서 재채점을 해야 하는 상황에서 동적으로 크기를 잡는 코드는 통과하고 고정 배열 10만을 잡아놓은 코드는 갑자기 20만짜리 입력에 의해 터지는 건 공정하지 않다고 생각합니다.

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