새내기 주간

면접 대비

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

요약
서로 다른 학생 번호 n개가 한 줄에 주어질 때, 오름차순으로 정렬하는 데 필요한 인접 교환의 최솟값을 구한다.
난이도

보통10점 중 5점

유형
정렬, 분할 정복, 배열, 조합론
정답자
아직 제출이 없습니다

문제

새내기 주간에 학생들은 서로를 알아가고 다른 팀과 겨루기 위해 다양한 게임을 한다. 그중 한 게임에서는 한 팀의 새내기 전원이 한 줄로 서고, 키, 생년월일, 학번 같은 어떤 기준에 따라 스스로 줄을 다시 선다. 줄을 다시 서는 과정은 오직 이웃한 두 학생의 자리를 맞바꾸는 동작만을 반복하여 이루어져야 한다. 가장 빨리 끝낸 팀이 이긴다. 따라서 이기려면 필요한 교환 횟수를 최소로 만들어야 한다.

입력

첫째 줄에 팀의 학생 수를 나타내는 양의 정수 nn 이 주어진다 (1≤n≤1,000,0001 \le n \le 1{,}000{,}000). 다음 nn 개의 줄에는 각 학생의 학번이 한 줄에 하나씩, 정수로 주어진다. 같은 학번은 두 번 이상 나타나지 않는다.

출력

학번이 증가하는 순서가 되도록 학생들을 정렬하는 데 필요한 최소 교환 횟수를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    3
    3
    1
    2
    
    예상 출력
    2