728x90
반응형

이분 탐색 문제이다. 처음에 e를 max(li)-2*K로 설정하는 허튼짓을 하는 바람에 엄청나게 많이 틀렸다. 

s가 0이면 0으로 나눌 경우가 생길 수 있기 때문에 1로 시작해야 된다. PyPy3로 제출해야 통과된다.

import sys

def count(li, m):
    t = 0
    for n in li:
        if n <= K:
            continue
        elif n < 2*K:
            n -= K
        else:
            n -= 2*K
        t += n//m
    return t
    
N, K, M = map(int, sys.stdin.readline().split())
li = [int(sys.stdin.readline()) for _ in range(N)]
s, e = 1, max(li)
res = 0
while s <= e:
    m = (s+e)//2
    if count(li, m) >= M:
        res = m
        s = m+1
    else:
        e = m-1
print(res if res else -1)
728x90
반응형

+ Recent posts