https://www.acmicpc.net/problem/2467
꼭 알칼리성-산성 용액만 섞어야 되는 게 아니였다 ㅎ
그냥 아무 두 용액을 섞었을 때 가장 0에 가까운 애들을 출력해주면 된다.
(⛏삽질 오지게 했다.)
[BOJ 2470] 두 용액 문제와 거의 동일하다!
2467 문제는 배열이 정렬되어 있고, 2470 문제는 배열이 정렬되어 있지 않다는 점만 다르다.
0. 입력 받기
n = int(input())
liquids = list(map(int, input().rsplit()))
1. 두 포인터를 이동시키면서 값 체크하기
절댓값(두 용액을 더한 값)
중 가장 작은 값을 answer 에 저장해준다.l
값을 증가시킨다.r
값을 감소시킨다.l, r, curr, answer = 0, n-1, 0, sys.maxsize
ansl, ansr = 0, 0
while l < r:
if abs(liquids[l] + liquids[r]) < answer:
answer = abs(liquids[l] + liquids[r])
ansl, ansr = liquids[l], liquids[r]
if liquids[l] + liquids[r] < 0:
l += 1
else:
r -= 1
import sys
input = sys.stdin.readline
n = int(input())
liquids = list(map(int, input().rsplit()))
l, r, curr, answer = 0, n-1, 0, sys.maxsize
ansl, ansr = 0, 0
while l < r:
if abs(liquids[l] + liquids[r]) < answer:
answer = abs(liquids[l] + liquids[r])
ansl, ansr = liquids[l], liquids[r]
if liquids[l] + liquids[r] < 0:
l += 1
else:
r -= 1
print(ansl, ansr)