๋ฌธ์
https://www.acmicpc.net/problem/1655
๋ฐฑ์ค ๋ฌธ์ ์ง - 0x17๊ฐ - ์ฐ์ ์์ ํ
์๊ณ ๋ฆฌ์ฆ: ์ฐ์ ์์ ํ
ํ์ด
ํ์ฌ๊น์ง ์ฃผ์ด์ง ์๊ฐ ํ์๊ฐ๋ผ๋ฉด ์ค๊ฐ๊ฐ์, ์ง์๊ฐ๋ผ๋ฉด ์ค๊ฐ๊ฐ ์ค ๋ ์์๊ฐ์ ์ถ๋ ฅํด์ผํ๋ค.
์ด ๋ฌธ์ ๋ ๋ ๊ฐ์ ํ(left, right)์ผ๋ก ํด๊ฒฐํ ์ ์๋ค.
left์๋ ์ค๊ฐ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์, right์๋ ์ค๊ฐ๊ฐ๋ณด๋ค ํฐ ์๋ค์ด ๋ค์ด๊ฐ๊ฒ๋ ๊ตฌ์ฑํ๋ค.
์ฆ left๋ ์ต๋ ํ์ผ๋ก, right๋ ์ต์ ํ์ผ๋ก ๊ตฌํํ๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ก์ด ์ x๊ฐ ์ฃผ์ด์ง๋๋ง๋ค left์ right์ ๊ธธ์ด๋ฅผ ๋น๊ตํ๋ค.
- ๋ ํ์ ๊ธธ์ด๊ฐ ๊ฐ๋ค๋ฉด left์ -x๋ฅผ ์ฝ์ (์ฃผ์ด์ง ์๊ฐ ์ง์๊ฐ๋ผ๋ฉด ๋ ์์๊ฐ์ ์ถ๋ ฅํด์ผํ๋ฏ๋ก)
- ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ค๋ฉด right์ x๋ฅผ ์ฝ์
ํ์ ์ฝ์ ํ left์ ์ฒซ๋ฒ์งธ ์์๊ฐ, right์ ์ฒซ๋ฒ์งธ ์์๊ฐ์ ๋น๊ตํ๋ค.
- left[0]
: ์ค๊ฐ๊ฐ or ์ค๊ฐ๊ฐ ์ค ๋ ์์๊ฐ
- right[0]
: ์ค๊ฐ๊ฐ๋ณด๋ค ํฐ ์ฒซ๋ฒ์งธ ๊ฐ
(๐จ ํ์ ์์ ์ด์งํธ๋ฆฌ์ด๋ฏ๋ก ์๋ฒฝํ ์ ๋ ฌ์ X, ํ์ง๋ง 0๋ฒ์งธ ๊ฐ์ ํญ์ ์ต์๊ฐ์ ๋ณด์ฅํจ)
๋ง์ฝ -left[0]
์ด right[0]
๋ณด๋ค ๋ ํฌ๋ค๋ฉด ํ์ ๋ฐ๊ฟ ๋ค์ ์ฝ์
ํ๋ค.
์ด๋ ๊ฒ ๋๋ฉด left[0]
์ ํญ์ ์ค๊ฐ๊ฐ or ์ค๊ฐ๊ฐ ์ค ๋ ์์๊ฐ ์ ๋ณด์ฅํ๊ฒ๋๋๊ฒ์ด๋ค!
๊ณผ์ ์ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- ์๋ก์ด ์ x๊ฐ ์ ๋ ฅ๋จ
- left์ right์ ๊ธธ์ด๋ฅผ ๋น๊ต
- ๊ธธ์ด๊ฐ ๊ฐ๋ค๋ฉด left์ -x๋ฅผ ์ฝ์ (์ค๊ฐ๊ฐ์ด left์ ์์ด์ผํ๋ฏ๋ก)
- ๋ค๋ฅด๋ค๋ฉด right์ x๋ฅผ ์ฝ์
-left[0]
๊ณผright[0]
๋น๊ต-left[0] > right[0]
์ด๋ผ๋ฉด pop- left์์ popํ ์ lpop, right์์ popํ ์ rpop
- left์ -rpop ์ฝ์ , right์ -lpop ์ฝ์
-left[0]
์ถ๋ ฅ
์ ์ฒด ์ฝ๋
# ๋ฉ๋ชจ๋ฆฌ: 37132KB / ์๊ฐ: 224ms
from sys import stdin
from heapq import heappop, heappush
input = stdin.readline
N = int(input())
left, right = [], [] # left: ์ต๋ํ(์ค๊ฐ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์), right: ์ต์ํ(์ค๊ฐ๊ฐ๋ณด๋ค ํฐ)
for _ in range(N):
num = int(input())
if len(left) == len(right):
heappush(left, -num)
else:
heappush(right, num)
if right and -left[0] > right[0]:
l, r = heappop(left), heappop(right)
heappush(right, -l)
heappush(left, -r)
print(-left[0])