트럭 운전사의 여정 계획
면접 대비시간 제한1초메모리 제한128 MB
고정된 모텔과 추가 모텔의 위치가 주어질 때, 하루 이동 거리가 A 이상 B 이하가 되는 숙박 순서의 가짓수를 센다.
문제
한 트럭 운전사가 밴쿠버에서 세인트존스까지 km 거리의 대륙 횡단 고속도로를 달리며, 매일 밤 모텔에서 묵으려고 한다.
다음 모텔들은 항상 이용할 수 있으며, 밴쿠버 출발점으로부터의 거리(km)로 나타낸다.
0, 990, 1010, 1970, 2030, 2940, 3060, 3930, 4060, 4970, 5030, 5990, 6010, 7000
여행이 시작되기 직전에 모텔이 더 추가될 수도 있다.
운전사가 여정을 완료하려면 다음 조건을 모두 만족해야 한다.
- 하루에 최소 km 이상 이동해야 한다(회사 규정).
- 하루에 최대 km 이하로 이동해야 한다(법적 제한).
- 매일 밤은 이용 가능한 모텔(위 고정 목록 또는 입력으로 주어지는 추가 위치)에서 묵어야 한다.
여정은 km 지점(밴쿠버)에서 시작해 km 지점(세인트존스)에서 끝난다. 매일의 이동 거리가 모두 이상 이하가 되도록 밤마다 묵을 모텔의 순서를 고르는 서로 다른 방법의 수를 구하여라.
예를 들어 추가 모텔이 없을 때, , 이면 여정이 불가능하므로 답은 이다. , 이면 방법이 정확히 하나이고, , 이면 방법이 네 가지이다. , 이고 km 지점에 모텔 하나를 추가하면 방법은 두 가지이다.
입력
- 첫째 줄에 하루 최소 이동 거리 가 주어진다.
- 둘째 줄에 하루 최대 이동 거리 가 주어진다. 이며 둘 다 정수이다.
- 셋째 줄에 추가 모텔의 개수 ()이 주어진다.
- 이어지는 개의 줄에 각각 추가 모텔의 위치 ()이 하나씩 주어진다.
같은 거리에 위치한 모텔은 없다.
출력
주어진 조건에서 운전사가 묵을 모텔을 선택해 여정을 완료하는 서로 다른 방법의 수를 정수 하나로 출력한다.