아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

사루만의 군대

시간 제한1초메모리 제한128 MB

요약
모든 병사가 범위 R 안에 있도록 병사 위치에 최소 개수의 팔란티르를 배치한다.
난이도

보통10점 중 5점

유형
그리디, 정렬, 투 포인터
정답자
아직 제출이 없습니다

문제

백색의 사루만은 아이젠가드에서 헬름 협곡까지 이어진 직선 도로를 따라 군대를 이끌어야 한다. 병력을 통제하기 위해 사루만은 팔란티르라 불리는 감시석을 병사들에게 나누어 준다. 각 팔란티르의 유효 사거리는 RR이며, 반드시 어떤 병사가 지니고 있어야 한다(팔란티르는 병사 없이 공중에 "떠 있을" 수 없다). 모든 병사가 어떤 팔란티르로부터 거리 RR 이내에 있도록 보장하는 데 필요한 팔란티르의 최소 개수를 구하라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 모든 팔란티르의 유효 사거리 RR (0≤R≤10000 \le R \le 1000)과 사루만 군대의 병사 수 nn (1≤n≤10001 \le n \le 1000)이 주어진다. 다음 줄에는 각 병사의 위치 x1,…,xnx_1, \dots, x_n (0≤xi≤10000 \le x_i \le 1000)을 나타내는 nn개의 정수가 주어진다. 입력의 끝은 R=n=−1R = n = -1인 테스트 케이스로 표시된다.

출력

각 테스트 케이스마다 필요한 팔란티르의 최소 개수를 한 줄에 정수 하나로 출력한다.

힌트

첫 번째 테스트 케이스에서 사루만은 위치 10과 20에 팔란티르를 놓을 수 있다. 사거리가 0인 팔란티르 하나로 위치 20에 있는 두 병사를 모두 덮을 수 있음에 유의하라.

두 번째 테스트 케이스에서 사루만은 위치 7(위치 1, 7, 15의 병사를 덮음), 위치 20(위치 20, 30을 덮음), 위치 50, 위치 70에 팔란티르를 놓을 수 있다. 팔란티르는 반드시 병사가 지니고 있어야 하며 공중에 "떠 있을" 수 없다. 따라서 사루만은 위치 60에 팔란티르를 놓아 위치 50과 70의 병사를 덮을 수 없다.

예제1

  1. 예제 1

    입력
    0 3
    10 20 20
    10 7
    70 30 1 7 15 20 50
    -1 -1
    
    예상 출력
    2
    4