아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

우물 파기

시간 제한0.2초메모리 제한256 MB

요약
N개의 값이 주어질 때, 모든 두 원소 쌍의 합 N(N-1)/2개 중 ceil(S/2)번째로 작은 값을 구한다.
난이도

보통10점 중 7점

유형
이분 탐색, 투 포인터, 정렬, 수학
정답자
아직 제출이 없습니다

문제

폴리매스 왕국의 사람들은 우물에서 지하수를 길어 마신다. 지하수의 근원은 물의 돌이라고 알려져 있지만, 물의 돌이 정확히 어디에 있는지 아는 사람은 아무도 없다.

최근 인구가 늘면서 물이 부족해졌다. 사람들은 이 문제를 해결하려고 우물 두 개를 더 파기로 했다. 우물을 팔 수 있는 곳은 NN곳이며, 그중 ii번 위치와 jj번 위치에 우물을 파면 Ai+AjA_i+A_j만큼의 이익을 얻는다.

우물을 팔 위치를 적당히 정해 최대 이익을 얻는 편이 낫겠지만, 돌발 상황에 대비해 모든 경우를 고려하려고 한다. 목표는 가능한 모든 이익의 중간값을 찾는 것이다. 즉, 우물을 팔 곳을 정하는 모든 S=n(n−1)2S=\frac{n(n-1)}{2}가지 경우에서 얻을 수 있는 이익 중 ⌈S2⌉\lceil \frac{S}{2} \rceil번째로 작은 값을 알아내려고 한다. 이 문제를 해결하는 프로그램을 작성해 보자.

입력

첫 줄에는 우물을 팔 수 있는 위치의 수 NN이 주어진다.

둘째 줄에는 각 위치에 우물을 팠을 때 얻는 이익을 나타내는 NN개의 정수 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 주어진다.

출력

가능한 모든 이익 중 ⌈S2⌉\lceil \frac{S}{2} \rceil번째로 작은 값을 출력한다.

제한

  • 2≤N≤500002 \le N \le 50000
  • 1≤Ai≤1091 \le A_i \le 10^9

예제1

  1. 예제 1

    입력
    5
    1 3 2 5 4
    
    예상 출력
    6