# 모든 용액에 대해서 다 확인해봐야 하는 건 맞음.
# 어떤 조합이 맞는지를 모르니까.
# 그 대신 각 용액에 대해 0에 가장 가까운 조합을 찾는 걸
# 이분 탐색으로 해주면 시간 복잡도 NlogN
N=int(input())
liq=list(map(int,input().split()))
liq.sort()
# 자기 자신+1과 끝 좌표(N)의 절반 인덱스에 있는 것과 합쳐보고
# 0보다 크면 아래쪽, 0보다 작으면 위쪽을 탐색
# 맨 마지막엔 0에 더 가까운 놈으로
fin_res,fin_a,fin_b=float('inf'),0,0
real_end=False
for i in range(N-1):
s,e = i+1, N-1
# 이분탐색 조지기
while s<=e and not real_end:
idx=(s+e)//2
res=liq[i]+liq[idx]
if res > 0:
e = idx-1
elif res < 0:
s = idx+1
else:
real_end=True
# idx 최종 업데이트
if real_end:
s,e=0 # 아무의미없는statement
elif s<N:
idx=s
elif i<e:
idx=e
elif (abs(liq[s]+liq[i])<abs(liq[e]+liq[i])):
idx=s
else:
idx=e
# 이제까지의 결과와 비교
if abs(fin_res)>abs(res):
fin_res=res
fin_a=i
fin_b=idx
# 0이 나왔으면 야리끼리
if real_end:
break
if liq[fin_a] < liq[fin_b]:
print(liq[fin_a],liq[fin_b])
else:
print(liq[fin_b],liq[fin_a])
아니 도대체 왜 틀리는거지???
시간초과도 아니고 틀렸습니다가 뜨는 건 이해할 수가 없다.
퍼센트도 안 올라가고 바로 틀렸습니다 뜨는 거 보면 아예 로직이 틀렸다는 뜻
근데 아무리 봐도 어디가 틀렸는지 모르겠음
2연속 이렇게 당하니까 기운 빠진다
이것도 답지 봐야할듯