용액의 특성값을 오름차순 정렬
왼쪽 끝과 오른쪽 끝을 더해가며
1) 더한 값이 > 0 인 경우
> 우측 인덱스를 하나 줄인다
2) 더한 값이 < 0 인 경우
> 좌측 인덱스를 하나 늘린다
3) 더한 값이 ==0 인 경우
> 탐색을 멈추고 반환한다
import kotlin.math.abs
import java.io.BufferedReader
import java.io.InputStreamReader
val br = BufferedReader(InputStreamReader(System.`in`))
fun main() {
val N = br.readLine().toInt()
val solutions = br.readLine().split(" ").map{ it.toInt() }.sorted()
var ans = Pair(1000000001, 1000000001)
var left = 0
var right = solutions.lastIndex
while (left < right) {
var mix = solutions[left] + solutions[right]
if (abs(mix) < abs(getMixOfAns(ans))) {
ans = Pair(solutions[left] , solutions[right])
}
if (mix < 0) {
left += 1
} else if (mix ==0 ) {
break
} else {
right -= 1
}
}
println("${ans.first} ${ans.second}")
}
fun getMixOfAns(ans: Pair<Int, Int>) : Int {
return ans.first + ans.second
}