https://www.acmicpc.net/problem/3079
3079번: 입국심사
첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ M ≤ 1,000,000,000) 다음 N개 줄에는 각 심사대에서 심사를 하는데 걸리는 시간인 Tk가 주어진다. (1 ≤ Tk ≤ 109)
www.acmicpc.net
이진탐색 문제
초기에 ed 값을 잘못 설정해서 시간초과가 났었다.
모든 입국심사를 최대시간이 걸리는 입국심사대에서 처리를 한다고 가정 시, 문제가 쉽게 풀렸음!
n,m = map(int,input().split())
arr = []
for i in range(n):
arr.append(int(input()))
st = 0
ed = m * max(arr)
result = 0
while st <= ed:
mid = int((st + ed))//2
cnt = 0
for i in range(len(arr)):
cnt += mid // arr[i]
# cnt가 많다면
if cnt >= m:
ed = mid -1
result = mid
# cnt 가 적다면
if cnt <m:
st = mid +1
print(result)
'Algorithm > baekjoon' 카테고리의 다른 글
[파이썬]baekjoon 2302: 극장 좌석 (0) | 2023.03.03 |
---|---|
[파이썬]baekjoon 2644: 촌수계산 (0) | 2023.02.28 |
[파이썬]baekjoon 2156: 포도주 시식 (0) | 2023.02.16 |
[파이썬]baekjoon 15810: 풍선 공장 (0) | 2023.02.16 |
[파이썬]baekjoon 4446: ROT13 (0) | 2023.02.15 |
댓글