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

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

바이토닉 정렬

시간 제한2초메모리 제한512 MB

요약
서로 다른 카드의 순열이 주어질 때, 수열이 처음에는 증가하고 그 뒤에는 감소하도록 만드는 최소 인접 교환 횟수를 구한다.
난이도

어려움10점 중 8점

유형
정렬, 그리디, 배열, 분할 정복
정답자
아직 제출이 없습니다

문제

노아는 다음과 같은 카드 게임을 제안한다. 서로 다른 양의 정수가 하나씩 적힌 카드 한 벌이 있다. 카드를 섞어 한 줄로 늘어놓는다. 목표는 카드의 값이 처음에는 단조 증가하다가 나머지 부분에서는 단조 감소하도록 카드를 줄에 배열하는 것이다.

허용되는 이동은 이웃한 두 카드가 자리를 바꾸는 것뿐이다. 카드는 서로 이웃해 있을 때만 자리를 바꿀 수 있다.

최종 배열에서 증가하는 앞부분은 비어 있어도 되고(즉, 전체가 내림차순이어도 되며), 감소하는 뒷부분도 비어 있어도 된다.

카드를 올바른 순서로 배열하는 데 필요한 최소 이동 횟수는 얼마인가?

입력

첫째 줄에 정수 nn (1≤n≤3⋅1051 \le n \le 3 \cdot 10^5)이 주어진다. 이는 카드의 수이다.

다음 nn개 줄에 각각 정수 cc (1≤c≤1091 \le c \le 10^9)가 하나씩 주어진다. 이는 처음 순서대로 나열된 카드이다. 모든 값은 서로 다르다.

출력

카드를 지정된 순서로 배열하는 데 필요한 최소 이동 횟수를 정수 하나로 출력한다.

예제1

  1. 예제 1

    입력
    8
    7
    4
    8
    10
    1
    2
    6
    9
    
    예상 출력
    7