나무 옮기기

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

어느 대저택의 정원사가 입구에서 분수까지 이어지는 곧은 도로를 따라 나무를 심으려고 한다. 도로의 길이는 $L$미터, 폭은 $W$미터이다.

저택의 주인은 도로의 양쪽에 다음 규칙대로 나무를 심어 달라고 부탁했다.

  • 가장 첫 번째 나무는 도로의 시작 지점(위치 $0$)에, 마지막 나무는 끝 지점(위치 $L$)에 있어야 한다.
  • 도로 양쪽에 놓인 나무의 위치는 서로 완전히 일치해야 한다.
  • 한쪽 면에서 이웃한 두 나무 사이의 간격은 모두 같아야 한다.

나무는 모두 $N$그루이며, 따라서 양쪽에 각각 $N/2$그루씩 놓이게 된다. 그런데 정원사는 실수로 모든 나무를 도로의 왼쪽 면에만 심어 버렸다. 이제 나무를 옮겨 위 규칙을 만족시키려고 한다. 각 나무는 도로 평면 위에서 직선으로 이동하며, 이동 거리는 유클리드 거리로 잰다. 규칙을 지키기 위해 옮겨야 하는 나무들의 이동 거리 합의 최솟값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 심은 나무의 수 $N$이 주어진다. $N$은 짝수이며 $4 \le N \le 2000$이다. 둘째 줄에는 두 정수 $L$과 $W$가 주어진다 ($1 \le L \le 10000$, $1 \le W \le 20$). 이어지는 $N$개의 줄에는 각 나무의 위치를 나타내는 정수 $p$가 한 줄에 하나씩 주어진다 ($0 \le p \le L$).

출력

규칙을 만족시키기 위해 옮겨야 하는 나무들의 이동 거리 합의 최솟값을 소수점 아래 여섯 자리까지 반올림하여 한 줄에 출력한다.