버블버블

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

요약
서로 다른 정수 배열이 주어질 때, 전체 뒤집기를 최대 한 번만 써서 오름차순으로 만드는 최소 인접 교환 횟수를 구한다.
난이도

어려움10점 중 8점

유형
정렬, 그리디, 동적 계획법
정답자
아직 제출이 없습니다

문제

민구는 원소의 개수가 NN개이고 값이 서로 다른 정수 배열 AA를 오름차순으로 만들고 싶다.

배열의 ii번째 원소와 i+1i+1번째 원소끼리 서로 위치를 바꿀 수 있고, 정렬 과정 중 언제든지 최대 딱 한 번 배열 전체의 순서를 뒤집을 수 있다.

원소를 교환하는 것, 배열 전체를 뒤집는 것 모두 11번의 횟수로 계산한다.

주어진 배열 AA를 오름차순으로 만드는데 필요한 최소한의 횟수를 구하여라.

입력

첫 번째 줄에 배열 AA의 원소 개수 NN이 주어진다. (1≤N≤1,000)(1 \le N \le 1\\,000)

두 번째 줄에 AA의 원소 정수 A_iA\_i가 공백을 사이에 두고 순서대로 주어진다. (1≤A_i≤106)(1 \le A\_i \le 10^6)

출력

첫 번째 줄에 주어진 배열 AA를 오름차순으로 만드는데 필요한 최소한의 횟수를 출력한다.

예제1

  1. 예제 1

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