만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

선택 정렬의 이동 거리

면접 대비

시간 제한5초메모리 제한1024 MB

요약
순열에 선택 정렬을 적용했을 때 각 값이 swap으로 이동한 거리의 합을 구합니다.
난이도

쉬움10점 중 3점

유형
배열, 시뮬레이션
정답자
아직 제출이 없습니다

문제

1부터 NN까지의 정수가 한 번씩 등장하는 수열 AA가 주어진다. 이 수열에 선택 정렬 알고리즘을 적용했을 때 각 수의 이동 거리를 구하라.

선택 정렬 알고리즘이 익숙하지 않다면 아래 설명을 읽어보자.

  • 길이가 NN인 수열 A={A1,A2,⋯ ,AN}A=\{A_1,A_2,\cdots,A_N\}을 오름차순으로 정렬하는 선택 정렬은 아래 동작을 N−1N-1번 반복한다.
    1. ii번째 동작에서는 Ai,Ai+1,⋯ ,ANA_i,A_{i+1},\cdots,A_N 중 최솟값 AjA_j를 찾는다.
    2. AiA_i와 AjA_j의 위치를 교환한다. 이때 AiA_i와 AjA_j의 이동 거리가 각각 (j−i)(j-i)만큼 증가한다.

예를 들어 {1,3,5,2,4}\{1,3,5,2,4\}가 주어졌다고 하자. 처음에는 모든 수의 이동 거리가 0이다. 알고리즘은 다음과 같이 진행된다.

  1. A1=1A_1=1을 자기 자신과 교환하면 {1,3,5,2,4}\{1,3,5,2,4\}가 된다. 1의 이동 거리는 0만큼 증가한다.
  2. A2=3A_2=3과 A4=2A_4=2를 교환하면 {1,2,5,3,4}\{1,2,5,3,4\}가 된다. 2와 3의 이동 거리는 각각 2만큼 증가한다.
  3. A3=5A_3=5와 A4=3A_4=3을 교환하면 {1,2,3,5,4}\{1,2,3,5,4\}가 된다. 3과 5의 이동 거리는 각각 1만큼 증가한다.
  4. A4=5A_4=5와 A5=4A_5=4를 교환하면 {1,2,3,4,5}\{1,2,3,4,5\}가 된다. 4와 5의 이동 거리는 각각 1만큼 증가한다.

따라서 1은 0, 2는 2, 3은 3, 4는 1, 5는 2만큼 이동한다.

입력

첫째 줄에 수열의 길이 NN이 주어진다.

둘째 줄에 수열의 원소 A1,A2,⋯ ,ANA_1,A_2,\cdots,A_N이 차례대로 공백으로 구분되어 주어진다.

출력

첫째 줄에 NN개의 정수를 공백으로 구분하여 출력한다. ii번째 정수는 ii의 이동 거리를 의미한다.

제한

  • 1≤N≤5×1051\leq N\leq 5\times 10^5
  • AA에는 11부터 NN까지의 정수가 정확히 한 번씩 등장한다.

예제2

  1. 예제 1

    입력
    5
    1 2 3 4 5
    
    예상 출력
    0 0 0 0 0
    
  2. 예제 2

    입력
    5
    1 3 5 2 4
    
    예상 출력
    0 2 3 1 2