728x90
๋ฌธ์
ํ์ด
์ ๋ ฅ์ด ๋ค์๊ณผ ๊ฐ์ ๋,
200 2 5
100 150 10
110 150 15
์์์ ๋ฒํธ๋ 0 ~ 200๊น์ง ์๋ค.
์ฐ์ ์ค๊ฐ ๊ฐ(100)์ ๊ตฌํ๊ณ , 0๋ฒ ์์์์ 100๋ฒ ์์๊น์ง์ ๋ํ ๋ฆฌ ๊ฐ์๋ฅผ ๊ตฌํ๋ค.
๋ํ ๋ฆฌ ๊ฐ์์ ๋ฐ๋ผ ์ด๋ถ ํ์์ ์ํํ๋ฉด ๋๋ค.
์ฝ๋
import sys
input = sys.stdin.readline
#๋ํ ๋ฆฌ ์ ๊ตฌํ๊ธฐ
def calAcorn(rules, boxNum):
cnt = 0
for start, end, margin in rules:
if boxNum < start:
continue
end = min(boxNum, end)
cnt += (end - start) // margin + 1
return cnt
def binarySearch(rules, end, find):
start = 0
while start < end:
mid = (start + end) // 2
midAcorn = calAcorn(rules, mid)
if midAcorn < find:
start = mid + 1
else:
end = mid
return start
n, k, d = map(int, input().split())
rules = []
for _ in range(k):
a, b, c = map(int, input().split())
rules.append((a, b, c))
print(binarySearch(rules, n, d))
๋ง๋ฌด๋ฆฌ
๊ณจ๋ 2 ์์ค์ ์๊ณ ๋ฆฌ์ฆ์ ์๋ ๊ฒ ๊ฐ๋ค.
728x90