만드는 중입니다

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

주차 타워

면접 대비

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

요약
원형 주차 탑에서 번호가 작은 차부터 차례로 모두 뺄 때, 필요한 회전 버튼 최소 횟수를 구합니다.
난이도

쉬움10점 중 3점

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

문제

원형의 주차 타워가 있다. 주차 타워에는 NN개의 칸이 원형으로 있다. 각 칸은 시계 방향으로 차례대로 11번째, 22번째, …\dots, NN번째 칸이라고 부른다. 각 칸에는 차가 한 대씩 들어 있다. ii번째 칸에 있는 차의 번호는 aia_i이다.

주차 타워에는 버튼 두 개가 있다. 버튼 A를 누르면 주차 타워를 시계 방향으로, 버튼 B를 누르면 반시계 방향으로 한 칸 회전할 수 있다. 아래 왼쪽 그림은 위 예시에서 버튼 A를 누른 다음의 상태이고, 오른쪽 그림은 버튼 B를 누른 다음의 상태이다.

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

차는 맨 아래에 있는 한 칸에서만 뺄 수 있다. 처음에는 1번째 칸이 맨 아래에 있다. 맨 아래에 있지 않은 칸의 차를 빼려면, 먼저 버튼을 적절히 눌러 주차 타워를 회전해서 그 차가 있는 칸을 맨 아래로 옮겨야 한다.

또한 번호 xx를 가진 차를 빼려면, 먼저 번호가 xx보다 작은 모든 차를 빼야 한다. 즉, 주차 타워에 번호가 xx 미만인 차가 남아 있으면 번호가 xx인 차는 뺄 수 없다.

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

입력

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

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

출력

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

제한

  • 1≤N≤100,0001 ≤ N ≤ 100,000
  • 1≤ai≤1,000,000,0001 ≤ a_i ≤ 1,000,000,000

예제2

  1. 예제 1

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

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