페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#5201
서브태스크

주차타워 1초 64MB

문제

원형의 주차 타워가 있다. 주차 타워에는 N개의 칸이 원형으로 있다.

각 칸은 시계 방향으로 차례대로 1번째, 2번째, ..., N번째 칸으로 부른다.

각 칸에는 차가 한 대씩 들어있다. i번째 칸에 있는 차는 번호 ai를 가지고 있다.

 

주차 타워에는 두 개의 버튼이 있다. 

버튼 A를 누르면 주차 타워를 시계방향으로, 버튼 B를 누르면 주차 타워를 반시계방향으로 한 칸 회전할 수 있다.

아래에 있는 왼쪽 그림은 위 예시에서 버튼 A를, 오른쪽 그림은 버튼 B를 누른 다음의 상태를 나타낸다.

 

이 때, 주차 타워에서 모든 차를 빼려 한다.

 

맨 아래에 있는 한 개의 칸에서만 차를 뺄 수 있다. 초기 상태에는 1번째 칸이 맨 아래에 있다. 

맨 아래에 있지 않은 칸에 있는 차를 빼기 위해서는, 먼저 버튼을 적절히 눌러서 주차 타워를 회전해, 차가 있는 칸을 맨 아래로 옮겨야 한다.

 

추가적으로, 번호 x를 가진 차를 빼기 위해서는 먼저 번호가 x보다 작은 모든 차를 먼저 빼어야 한다.

즉, 주차 타워에 번호가 x 미만인 차가 남아 있다면, 번호가 x인 차를 뺄 수 없다.

 

주차 타워에서 모든 차를 빼기 위해, 버튼을 눌러야 하는 총 횟수의 최솟값을 구하는 프로그램을 작성하여라.


입력

첫 번째 줄에 정수 N이 주어진다.

두 번째 줄에 차들의 번호 a1,……, aN이 순서대로 공백을 사이에 두고 주어진다.​ 

[제약 조건]

​• ​1 ≤ N ≤​ 100,000

• 1 ≤ ai​ ≤​ 1,000,000,000


출력

첫 번째 줄에 버튼을 눌러야 하는 총 횟수의 최솟값을 출력하라. ​


부분문제

번호 점수 조건
#18점

ai == 1. (1 ≤ i ≤​ N), 즉, 모든 자동차의 번호는 1이다.

#29점

i ≠ j일 때, ai ≠ aj. 즉, 모든 자동차의 번호가 다르다.

#310점

N ≤​ 10.

#421점

N ≤​ 100.

#531점

N ​≤​ 1000.

#6추가 제약 조건 없음.점

추가 제약 조건 없음.


예제1

입력
4

1221
출력
3

차 빼기 → 버튼 A → 차 빼기 → 버튼 A → 차 빼기 → 버튼A → 차 빼기 순서로 진행하면 된다.


예제2

입력
5

31451
출력
7

출처

KOI 2차 2022 중3

역링크