[BOJ][๐ก5][๋ฐฑ์ค#07983] ๋ด์ผ ํ ๊ฑฐ์ผ
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold V
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
์ ๊ณผ์ ํ๊ธฐ ์ซ๋ค. ์๋ฌด ๊ฒ๋ ์ ํ๊ณ ์ถ๋ค. ๋ ์ ๊ทน์ ์ด๊ณ ๊ฒฉ๋ ฌํ๊ฒ ์๋ฌด ๊ฒ๋ ์ ํ๊ณ ์ถ๋ค. ์์์. ๋ด๊ฐ ์๊น ์ฑ ์์๋ค๊ฐ n๊ฐ์ ๊ณผ์ ๋ชฉ๋ก์ ์ ์ด๋จ์ด. ๊ฐ๊ฐ์ ๊ณผ์ i๋ di ์ผ์ด ๊ฑธ๋ฆฌ๊ณ , ์ค๋๋ก๋ถํฐ ti ์ผ ์์ ๋๋ด์ผ ํด. ๊ทธ๋ฌ๋๊น ์ค๋์ด 0์ผ์ด๋ฉด, ti์ผ์ด ๋๋๊ธฐ ์ ์ ์ ์ถ์ด์ผ. ๊ณผ์ ๋ ํ๋ฒ ์์ํ๋ฉด ์ฌ์ง ์๊ณ ๊ณ์ํด์ผ ํด. ์ ๊ทธ๋ฌ๋ฉด ๋จธ๋ฆฌ ์ํ ์ง๊ฑฐ๋ . ๊ทผ๋ฐ ์์์. ๋ด๊ฐ ์ง๊ธ ๋๋ฌด, ๋๋ฌด ์๋ฌด ๊ฒ๋ ์ ํ๊ณ ์ถ์ด. ๊ทธ๋์ ์ค๋์ ์๋ฌด ๊ฒ๋ ์ ํ ๊ฑฐ์ผ. ๋ ์ค์ํ ๊ฒ ๋ญ์ง ์์? ์ฌ์ค ๋ ๋ด์ผ๋, ๋ชจ๋ ๋, ์๋ฌด ๊ฒ๋ ์ ํ๊ณ ์ถ์ด. ํ ๋ฉฐ์น ๋์์ ๊ณ์ ์๋ฌด ๊ฒ๋ ์ํ๋ ค๊ณ . ์. ๊ณผ์ ๊ฐ ์์ ๋ ๋ด๊ฐ ๋ด์ผ๋ถํฐ ์ฐ์์ผ๋ก ์ต๋ ๋ฉฐ์น ๋์ ๋ ์ ์๋์ง ๊ถ๊ธํ๋ค. ๊ถ๊ธํ๊ธด ํ๋ฐ, ๋ ์๋ฌด ๊ฒ๋ ์ ํ๊ณ ์ถ์ด. ์ข์ ์๊ฐ์ด ๋ฌ๋ค. ๋ํฌ๊ฐ ์ด๊ฑธ ๋์ ๊ตฌํด์ฃผ๋ฉด, ๋ด๊ฐ ๋ํฌ์ ๋ง์ ๋ฌธ์ ์๋ฅผ ํ๋ ์ฌ๋ ค์ค๊ฒ.
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ๊ณผ์ ์ ๊ฐ์์ธ ์ ์ n (1 โค n โค 106)์ด ์ฃผ์ด์ง๋ค. ์ดํ n๊ฐ์ ์ค์ ๊ฐ๊ฐ์ ๊ณผ์ ๋ฅผ ๋ํ๋ด๋ ๋ ์ ์ di, ti (1 โค di, ti โค 109)๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์ค๋์ 0์ผ์ด๋ค. ๋ชจ๋ ์ ๋ ฅ์ ๋ํด, ์ค๋ ์๋ฌด ๊ฒ๋ ์ ํด๋ ๊ณผ์ ๋ฅผ ๋ง๋ฌด๋ฆฌ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์กด์ฌํจ์ด ๋ณด์ฅ๋๋ค.
์ถ๋ ฅ
๋ด์ผ(1์ผ)๋ถํฐ ์ฐ์์ผ๋ก ์ต๋ ๋ฉฐ์น ๋์ ๋ ์ ์๋์ง๋ฅผ ์ถ๋ ฅํ๋ค. ๊ฐ๋ น, ๋ต์ด 0์ด๋ฉด, ๋ด์ผ ๊ณผ์ ๋ฅผ ํด์ผ ํ๋ฉฐ, 1 ์ด๋ฉด, ๋ชจ๋ ์ ๊ณผ์ ๋ฅผ ํด์ผ ํ๋ค.
์์
์ ๋ ฅ
3
2 8
1 13
3 10
์ถ๋ ฅ
5
My Sol
import sys
input = sys.stdin.readline
from heapq import heappop, heappush
N = int(input())
H = []
for _ in range(N):
d, t = map(int, input().split())
heappush(H, (-t, -d))
k = heappop(H)
t, d = -k[0], -k[1]
cur = t-d+1
while H:
k = heappop(H)
t, d = -k[0], -k[1]
cur = min(cur-1, t)
cur -= d-1
print(cur-1)
๋ค์์๋ถํฐ ๋ง๊ฐ๊ธฐํ๊น์ง ๊ณผ์ ๋ฅผ ์ ์ถํ๋ฉฐ ๋ ์ง๋ฅผ ๊ฐฑ์ ํด๋๊ฐ๋ฉด ๋๋ค. heap์ ์ด์ฉํด ๋ง๊ฐ๊ธฐํ์ด ํฐ ์์, ๊ทธ๋ฆฌ๊ณ ์์
๊ธฐ๊ฐ์ด ํฐ ์์๋ก ์ ๋ ฌํด O(nlogn)
์ ์๊ฐ๋ณต์ก๋๋ก ์ ๋ ฌํ๋ค. ํ ๊ณผ์ ๋ฅผ ๋๋ด๋ ๋ฐ์ ํ์ํ ์๊ฐ ์ค ๋ฏธ๋ฃฐ ์ ์๋ ์ต๋์ ์๊ฐ์, ํ์ฌ ์๊ฐ cur
์์ 1์ ๋บ ์๊ฐ๊ณผ ํ ๊ณผ์ ์ ๋ง๊ฐ๊ธฐํ ์ค ๋ ์์ ๊ฐ์ด๋ค. ์ด ๊ฐ์์ ์์
๊ธฐ๊ฐ์ ๋บ ๋ ์ง๋ฅผ cur
์ ๊ฐฑ์ ํด ๋ฃ๋๋ค.
๋ง์ง๋ง cur-1
์ ์ถ๋ ฅํ๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋๊ธ๋จ๊ธฐ๊ธฐ