Logo
(追記) (追記ここまで)

모든 반례를 다 입력해도 못찾겠습니다

1912번 - 연속합

시간 복잡도가 오래 걸리는 코드이긴 하나 시간 초과가 아닌 틀렸다고 채점됩니다.
반례도 궁금하고 현재 코드가 많이 비효율적인 지도 궁금합니다.

위 코드는 처음과 끝 두 방향에서 누적합을 계산해가면서 최대 연속합을 찾는 것 같습니다.

그러나 최대 연속합이 다음과 같은 경우 반례가 발생합니다.

// Input
5
1 -100 50 -100 1
// Answer: 50
// Output: 1

50의 양 옆에 있는 -100으로 인해 각 누적합에서의 최대는 1이므로 위 코드는 1을 출력하지만,

답은 50이므로 틀렸습니다 를 받게 됩니다.

비슷한 반례들:

// Input
15
-74 -6 -7 -5 93 -59 -71 21 58 34 -69 -28 -50 -91 -14 
// Answer: 113
// Output: 93
// Input
11
-40 -75 -68 79 -38 26 -82 47 7 -80 -68 
// Answer: 79
// Output: -40
// Input
10
40 38 -69 -9 -54 93 -53 -43 19 -75 
// Answer: 93
// Output: 78
// Input
7
-4 -58 34 3 -77 -6 31 
// Answer: 37
// Output: 31
// Input
5
8 -36 32 -64 -8 
// Answer: 32
// Output: 8

또한 정해와 위 코드를 비교했을 때 시간복잡도는 동일한 것 같습니다만,

정해에 비해서 복잡하게 계산되고 있는 것 같습니다.

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

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /