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

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

강 건너기

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

요약
강을 건너는 부스터 사거리와 바위 점프를 정해 사거리 제곱값과 점프 비용의 합을 최소화합니다.
난이도

보통10점 중 5점

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

문제

Nefario 박사가 연구실에서 오래 지내다가 여행을 떠난다. 가는 길에 강을 하나 건너야 한다. 다행히 강에는 건너편으로 이어지는 일직선 위에 돌 NN개가 놓여 있어서 발판으로 쓸 수 있다. 강의 폭, 즉 건너야 하는 전체 거리는 LL이다.

박사의 스쿠터는 공중에 뜨지만 멀리 뛰지는 못해서, 더 멀리 뛰려면 로켓 부스터를 만들어야 한다. 부스터 가격은 성능에 따라 달라진다. 거리 RR까지 뛸 수 있는 부스터를 만드는 비용은 R2R^2이다. 부스터는 여러 번 쓸 수 있지만 한 번 뛸 때마다 CC가 더 든다. 예를 들어 사거리 1010짜리 부스터를 만들어 다섯 번 뛰면 전체 비용은 102+5×C=100+5C10^2 + 5 \times C = 100 + 5C이다.

출발점은 이쪽 강가인 거리 00이고 도착점은 건너편 강가인 거리 LL이다. 한 번 뛸 때는 앞으로 RR 이하만큼 이동하며, 착지하는 곳은 돌이거나 건너편 강가여야 한다.

강의 폭 LL, 점프 한 번에 드는 비용 CC, 돌 NN개의 위치가 주어진다. 강을 건너는 최소 비용 MM과 그때의 점프 횟수 JJ, 부스터의 사거리 RR을 구하라.

강 건너기

위 그림에서 박사는 폭이 66인 강을 건넌다. 돌은 거리 11, 22, 33, 55에 있다. 사거리 33짜리 부스터를 만들면 두 번 뛰어서 강을 건널 수 있다.

1≤L≤1091 \le L \le 10^9, 0≤C≤1060 \le C \le 10^6, 0≤N<10000 \le N < 1000이다. 돌의 위치는 00보다 크고 LL보다 작은 정수다. 사거리 RR은 양의 정수로 고른다. 값이 커지므로 64비트 정수를 써야 하고, 가능한 사거리를 모두 훑는 방법으로는 제한 시간 안에 풀 수 없다.

입력

입력은 테스트 케이스 여러 개로 이루어진다. 각 테스트 케이스의 첫 줄에 정수 LL, CC, NN이 주어진다. 차례대로 강의 폭, 점프 한 번에 드는 비용, 돌의 개수다. 다음 NN개 줄에는 각각 돌 하나의 위치가 주어진다. 돌은 위치 순서대로 주어지지 않을 수 있다. 마지막 줄에는 00 하나만 있고, 그 줄에서 입력이 끝난다.

출력

각 테스트 케이스마다 강을 건너는 최소 비용을 한 줄에 다음 형식으로 출력한다.

Minimum cost M achieved with J jumps of range R

MM은 최소 비용, RR은 그 비용을 만드는 사거리, JJ는 사거리 RR로 강을 건너는 데 필요한 최소 점프 횟수다. 최소 비용을 만드는 사거리가 여러 개면 그중 가장 작은 것을 RR로 출력한다.

예제6

  1. 예제 1

    입력
    6 2 4
    1
    2
    3
    5
    6 20 4
    1
    2
    3
    5
    0
    
    예상 출력
    Minimum cost 12 achieved with 4 jumps of range 2
    Minimum cost 49 achieved with 2 jumps of range 3
    
  2. 예제 2

    입력
    10 5 0
    0
    
    예상 출력
    Minimum cost 105 achieved with 1 jumps of range 10
    
  3. 예제 3

    입력
    10 0 9
    1
    2
    3
    4
    5
    6
    7
    8
    9
    0
    
    예상 출력
    Minimum cost 1 achieved with 10 jumps of range 1
    
  4. 예제 4

    입력
    4 12 1
    2
    0
    
    예상 출력
    Minimum cost 28 achieved with 2 jumps of range 2
    
  5. 예제 5

    입력
    1 0 0
    0
    
    예상 출력
    Minimum cost 1 achieved with 1 jumps of range 1
    
  6. 예제 6

    입력
    1000000000 1000000 0
    0
    
    예상 출력
    Minimum cost 1000000000001000000 achieved with 1 jumps of range 1000000000