사용자 도구

사이트 도구


ps:problems:boj:6209

제자리 멀리뛰기

ps
링크acmicpc.net/…
출처BOJ
문제 번호6209
문제명제자리 멀리뛰기
레벨골드 2
분류

파라메트릭 서치

시간복잡도O(mlogn)
인풋사이즈n<=1,000,000,000, m<=50,000
사용한 언어Python
제출기록34124KB / 224ms
최고기록160ms
해결날짜2022/01/29

풀이

  • 징검다리과 동일한 문제. 풀이는 그쪽 참고.

코드

"""Solution code for "BOJ 6209. 제자리 멀리뛰기".

- Problem link: https://www.acmicpc.net/problem/6209
- Solution link: http://www.teferi.net/ps/problems/boj/6209

Tags: [Parametric Search]
"""

import sys
from teflib import binsearch


def main():

    def is_valid(min_dist):
        prev_rock = 0
        removed_rock_count = 0
        for rock in rocks:
            if rock - prev_rock < min_dist:
                removed_rock_count += 1
            else:
                prev_rock = rock
        if d - prev_rock < min_dist:
            removed_rock_count += 1
        return removed_rock_count <= m

    d, n, m = [int(x) for x in sys.stdin.readline().split()]
    rocks = [int(sys.stdin.readline()) for _ in range(n)]

    rocks.sort()
    print(binsearch.maximum_valid_integer(0, d // (n - m + 1) + 1, is_valid))


if __name__ == '__main__':
    main()

토론

댓글을 입력하세요:
N O Q D M
 
ps/problems/boj/6209.txt · 마지막으로 수정됨: 2022/01/29 16:28 저자 teferi