2141๋ฒ: ์ฐ์ฒด๊ตญ
boj.ma
๋ฌธ์ ์ ์กฐ๊ฑด
์ฒซ์งธ ์ค์ N(1 ≤ N ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ์ ์ค์๋ X[1], A[1], X[2], A[2], …, X[N], A[N]์ด ์ฃผ์ด์ง๋ค. ๋ฒ์๋ |X[i]| ≤ 1,000,000,000, 1 ≤ A[i] ≤ 1,000,000,000 ์ด๋ฉฐ ๋ชจ๋ ์ ๋ ฅ์ ์ ์์ด๋ค.
N์ด 10^5์ผ๋ก O(N^2) ์ดํ์ ์๊ณ ๋ฆฌ์ฆ๋ง ์ ์ฉ ๊ฐ๋ฅํจ์ ์ ์ ์๋ค.
๋ง์ฝ O(N^2) ์๊ณ ๋ฆฌ์ฆ์ด ์ ์ฉ ๊ฐ๋ฅํ๋ค๋ฉด ๋ชจ๋ N์ ๋ํด ์ฐ์ฒด๊ตญ์ ์ธ์์ ํด๋น ์ฐ์ฒด๊ตญ์์ ๋ง์๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ฉด ์ฝ๊ฒ '๊ฑฐ๋ฆฌ์ ํฉ์ด ์ต์๊ฐ ๋๋ ์์น'๋ฅผ ์ฐพ์ ์ ์๋ค.
๋ฌธ์ ์ ๊ทผ
์์์ ์ฐ์ฒด๊ตญ ์์น๋ฅผ ๊ฐ์ ํ๊ณ ์์ ์ธ์๋ณด๋ฉด ์๋์ ๊ฐ์ ํํ์์ ์ ์ ์๋ค.
๋ง์์ (1, 0), (2, 0), (3, 0)์ ์์นํ๊ณ , ์ฐ์ฒด๊ตญ์(k, 0)์ ์์นํ๋ค๊ณ ์๊ฐํ ์ ์๋ค(์ค์ ๋ก๋ ๋ฌธ์ ์กฐ๊ฑด์์ ์์ง์ ์ด๋ผ๊ณ ๋ช ์ํ๊ธฐ์ y์ถ์ ๋ํ ๊ณ ๋ ค๋ ํ์ ์์ผ๋ ์ค๋ช ์ ํธ์์ y์ถ์ ๋์ ํจ). ์ฐ์ฒด๊ตญ์ด (k, 0)์ ์์นํ ๋ ๊ฐ ๋ง์๊น์ง ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
์ฐ์ฒด๊ตญ์ ์์น(k์ ๊ฐ)์ ๋ฐ๋ผ ์ ๋๊ฐ์ด ๋ค๋ฅด๊ฒ ํด์๋๋ฉฐ ์์ด ๋ณ๋ํ๋ ๊ฒ์ ์ ์ ์๋ค. ์ ์์์ 1, 2, 3์ ๊ฐ๊ฐ ๋ง์์ ์์น์ด๋ค. ์ฆ, ์ฐ๋ฆฌ๋ k ๊ฐ์ ๋ณ๋ํด๊ฐ๋ฉฐ ํด๋น ์์ ์ต์๊ฐ์ ๊ตฌํ ์ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
์ด ์์ ์ต์๊ฐ์ ๊ตฌํด์ผํ๋ค๋ ๊ฒ์ ์ธ์งํ ํ์ ์กฐ๊ธ ๋ ์ผ๋ฐํํ์ฌ ์์ ํ์ด์จ๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
k๋ก ๋ํ๋ธ ์์ด ๋ฒกํฐ์ ๋ด์ , ์ธ์ ์๊ณผ ๋์ผํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ์ฆ, x1, x2, x3, x4์ ๊ฐ์ ๋ฌด๊ดํ๊ฒ a, b, c, d๋ผ๋ ๊ณ์์ ์ํฅ๋ง์ ๋ฐ์ผ๋ฉฐ k๊ฐ ๊ฒฐ์ ๋๋ค!
a, b, c, d๋ ์ด๋ป๊ฒ k ๊ฐ์ ์ํฅ์ ์ค๊น?
- a + b - c - d > 0 ์ด๋ฉด, ๋ด๋ถ์ ๋ฌด๊ฒ ์ค์ฌ์ด ์กด์ฌํ๋ ๋ด๋ถ
- a + b - c - d < 0 ์ด๋ฉด, ์ธ๋ถ์ ๋ฌด๊ฒ ์ค์ฌ์ด ์กด์ฌํ๋ ์ธ๋ถ
์ ์ฌ์ค์ ๋ฐ๋ผ a + b ๋ถ๋ถ (์ฌ๊ธฐ์๋ (a + b)์ด์ง๋ง ์ผ๋ฐํํ์ฌ ์๊ฐํ๋ฉด k๋ณด๋ค ์์ x์ ๊ณ์๋ค์ ํฉ์ด๋ค.)์ด c + d ๋ณด๋ค ํฌ๊ฒ ๋๋ ์๊ฐ์ k ๊ฐ์ด ์ ๋ต์ด ๋จ์ ์ ์ ์๋ค.
์ฝ๋๋ก ํํํ๊ธฐ
์ ์ฌ์ค์ ๋ฐ๋ผ 'k๋ณด๋ค ์์ x์ ๊ณ์์ ํฉ'์ ๊ตฌํ๋ฉด์ ํด๋น ๊ฐ์ด ๋๋จธ์ง ๊ณ์์ ํฉ(์ ์์์ c + d์ ํด๋น)๋ณด๋ค ์ปค์ง๋ ๋ฐ๋ก ๊ทธ ์์ ์ ๊ตฌํ๋ฉด ๋๋ค. ์๋ํ๋ฉด ํด๋น ์ง์ ์ด ๋ด๋ถ์ด ๋๋ ๊ฐ์ฅ ์ผ์ชฝ์ ์์นํ ์ง์ ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
peoples.sort()
acc_cnt = 0
for i in range(N):
village, people = peoples[i]
acc_cnt += people
if acc_cnt >= tot_people / 2:
print(village)
break
์ฝ๋๋ก ํํํ๋ฉด ๊ฐ๋จํ๋ค. acc_cnt๊ฐ k ๋ณด๋ค ์์ x์ ๊ณ์์ ํฉ์ ๋ํ๋ด๋ ์ญํ ์ ํ๋ ๊ฒ์ ์ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ tot_people / 2๋ ๋๋จธ์ง ๊ณ์์ ํฉ์ ์ญํ ์ ํ๋ค. ์ฆ, ๋๋จธ์ง ๊ณ์์ ํฉ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ์ ๋ง์์ ์ถ๋ ฅํ๋ฉด ์ ๋ต์ธ ๊ฒ์ด๋ค.
์ฝ๋๋ ๋งค์ฐ ๊ฐ๋จํ๋ฐ ๋ ผ๋ฆฌ๋ฅผ ์ฐพ์๋ด๋ ๊ฒ์ด ์ด๋ ค์ ๋ค. ํนํ x1, x2, x3, ... xi(=์ฐ์ฒด๊ตญ๊ณผ ๋ง์ ๊ฐ ๊ฑฐ๋ฆฌ)์ ๋ฌด๊ดํ๊ฒ ๊ณ์(=๋ง์ ์ฌ๋ ์)๋ง ์ํฅ์ ์ค๋ค๋ ์ฌ์ค์ ์ฐพ์๋ด๋ ๊ฒ์ด ์ด๋ ค์ ๋ค. ์ ์ฌํญ์ ๋ฒกํฐ์ ๋ด๋ถ, ์ธ๋ถ์ผ๋ก ์ดํดํ ํ์๋ ์ฝ๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.