용액 합성하기

시간 제한1초메모리 제한512 MB

요약
정렬된 정수 N개가 주어질 때, 서로 다른 두 수의 합이 0에 가장 가까운 값을 구하고, 거리가 같으면 더 작은 합을 출력한다.
난이도

보통10점 중 5점

유형
투 포인터, 정렬, 배열
정답자
아직 제출이 없습니다

문제

어느 화학 연구소는 여러 종류의 용액을 보유한다. 용액마다 -100,000,000부터 100,000,000까지의 특성값이 하나씩 붙어 있다. 같은 양의 두 용액을 섞으면 새 용액의 특성값은 두 특성값의 합이 된다.

용액은 각각 10ml 시험관에 10ml씩 담겨 있고, 비어 있는 20ml 시험관은 하나뿐이다. 용액을 계량할 수 없어서 두 용액을 10ml씩 부어 20ml로 만드는 혼합만 할 수 있고, 그마저도 단 한 번뿐이다. 그래서 특성값을 미리 보고 어떤 두 용액을 섞을지 정해야 한다.

예를 들어 특성값이 -101, -3, -1, 5, 93인 용액 다섯 개가 있다고 하자. 특성값이 -101인 용액과 93인 용액을 섞으면 -8이 되고, 5인 용액과 93인 용액을 섞으면 98이 된다. 가능한 조합을 모두 따져 보면 특성값 2가 0에 가장 가깝다.

오름차순으로 주어진 특성값 A1,…,ANA_1, \ldots, A_N 중 서로 다른 두 용액을 골라 섞어서 만들 수 있는, 0에 가장 가까운 특성값 BB를 구한다.

입력

N
A1 A2 … AN

첫째 줄에 용액의 개수 NN이 주어진다. 둘째 줄에 특성값 NN개가 오름차순으로 공백 하나씩을 사이에 두고 주어진다.

출력

B

0에 가장 가까운 특성값 BB를 한 줄에 출력한다. 0까지의 거리가 같은 값이 두 개라면 그중 작은 값, 즉 음수인 쪽을 출력한다.

제한

  • 2 ≤ N ≤ 100,000
  • -100,000,000 ≤ Ai ≤ 100,000,000
  • Ai−1≤AiA_{i-1} \le A_i (2 ≤ i ≤ N)

예제3

  1. 예제 1

    입력
    5
    -101 -3 -1 5 93
    
    예상 출력
    2
    
  2. 예제 2

    입력
    2
    -100000 -99999
    
    예상 출력
    -199999
    
  3. 예제 3

    입력
    7
    -698 -332 -123 54 531 535 699
    
    예상 출력
    1