Informatica Online Judge

  세 수의 합 (Large) [2503 / 09C7]

Time Limit(Test case) : 1000(ms)
Number of users who solved : 9   Total Tried : 150


The Champion of this Problem (C++) : gs19022 - 0ms / 242byte
My Best Submission (C++) : N/A

[koistudy.net (31st 강한필)]

Background

정수 N개가 주어진다. 이 때, 어떤 3개의 수를 합해서 0이 되는 경우가 있는지를 구해서 출력하라.

Input

입력의 첫째 줄에는 정수의 갯수를 나타내는 숫자 N이 주어진다. N은 30 000이하이다.
입력의 둘째 줄에는 정수 N개가 공백을 사이에 두고 들어온다. 정수는 16bit int 자료형에 들어갈 수 있게 들어온다.

Output

어떤 3개의 수를 합해서 0이 되는 경우가 있으면 첫째 줄에 3개의 수를 공백으로 구분하여 출력한다.
답이 여러개일 경우 사전순으로 가장 빠른 답을 출력한다.

a, b, c가 d, e, f 보다 사전순으로 빠르다는 것은, a
합해서 0이 되는 경우가 없으면 "NO" (따옴표 제외)를 첫째 줄에 출력한다.

IO Example

입력 예제 1

5
2 -1 0 1 -2

출력 예제 1

-2 0 2

입력 예제 2

4
0 0 1 2

출력 예제 2
NO

입력 예제 1의 답은 -1, 0, 1 도 있다. 하지만 사전순으로 가장 빠른 답인 -2, 0, 2를 출력하여야 한다.

입력 예제 2의 답은 NO 이다. 같은 숫자를 여러번 사용 할 수는 없다.

Submit : [C/C++] | [C++11] | [Obj-C] | [Java] | [Python]
Prob Analysis : [Problem Statistics] | [Solution]