RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
문제 KOI00180

전봇대

설명

일직선상에 N개의 전봇대가 한 줄로 서있다. 편의상, 일직선을 x-축이라 하고, 전봇대가 서 있는 위치 \(x_{0}\), \(x_{1}\), ..., \(x_{N-1}\)은 x-축 상의 x-좌표라고 하자. \(x_{0}\)는 항상 0이고 \(x_{i}(i \ge 1)\)는 양의 정수라고 가정한다.

이 전봇대들을 이웃한 두 전봇대 사이의 거리가 모두 일정하도록 일부 전봇대들을 옮기려고 한다. 이때 이동해야하는 전봇대들의 거리의 합이 최소가 되도록 해야 한다. 단, \(x_{0}\)에 위치한 전봇대는 움직일 수 없고, 이동하는 전봇대들은 정수 좌표 위치로만 이동 가능하다.

예를 들어, 아래의 그림 1과 같이 전봇대가 주어져 있다고 하자.

그림 1. 전봇대의 위치

이 경우 그림 2에서와 같이 x-좌표 6과 9에 위치한 전봇대를 각각 x-좌표 8과 12인 곳으로 이동하면, 모든 이웃한 전봇대들의 거리는 4로 같고 전봇대의 이동 거리의 합은 5이다.

그림 2. 전봇대의 이동 예 1

하지만 그림 3과 같이 x-좌표 4에 위치한 전봇대만을 x-좌표 3인 곳으로 이동하면, 이웃한 전봇대들의 거리는 모두 3이고 전봇대의 이동 거리의 합은 1이다.

그림 3. 전봇대 이동의 예 2

전봇대들의 위치 \(x_{0}\), \(x_{1}\), ..., \(x_{N-1}\)이 주어지면, 모든 이웃한 전봇대들의 거리가 같도록 전봇대들을 이동할 때(\(x_{0}\)에 위치한 전봇대는 고정), 이동 거리의 합이 최소가 되도록 하는 프로그램을 작성하시오.

※ 이 문제의 채점 데이터는 공개된 공식 데이터가 없어 재구성한 것입니다. 문제 지문은 원본(정보올림피아드 기출)을 따릅니다.

제약
입력 형식

입력의 첫 줄은 전봇대의 수 N \((1 \le N \le 100{,}000)\)이 주어진다. 두 번째 줄에는 전봇대의 위치를 나타내는 N개의 서로 다른 x-좌표 \(x_{i}(i = 0,\) ..., N-1)가 빈칸을 사이에 두고 오름차순으로 주어진다. \(x_{i}\)는 정수이고, \(i=0\)일 때 \(x_{i}=0,\) 그 외에는 \(1 \le x_{i} \le 1{,}000{,}000{,}000\) 이다.

출력 형식

출력은 단 한 줄이며, 모든 이웃한 전봇대들의 거리가 같도록 전봇대들의 이동거리 합의 최솟값을 출력한다.

예제 1
입력
4
0 4 6 9
출력
1
예제 2
입력
7
0 5 12 15 16 22 23
출력
11
문제 정보

생성자가 기록되지 않았습니다.

출처 올림피아드 > 한국정보올림피아드 > KOI 2013 > 2차 대회 > 고등부 2번

평가 및 의견

전봇대

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

전봇대

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8