RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
KOI00084

순서 섞기

Platinum II 플래티넘 II
난이도
1s
시간 제한
512MB
메모리 제한
1
맞았습니다!!
3
제출 수
33.3%
정답률
레이팅

의견: 0

설명

정수가 저장된 크기 \(N\)인 배열 A가 있을 때, ‘순서 섞기’ 연산은 아래와 같이 정의된다.

  1. 크기가 \(N\)인 배열 B를 이용하여, 배열 A의 좌측 끝 또는 우측 끝에 있는 값 중 하나를 차례로 꺼내어 배열 B에 좌측부터 순서대로 저장한다. 아래의 그림에서 값이 꺼내지는 순서는 \(9\), \(34\), \(19\), \(12\), \(25\), \(4\), \(5\), \(36\)이다.
  2. 배열 B를 배열 A에 복사한다.

위에서 보인 그림처럼 순서 섞기 연산을 하면 배열 A의 값은 다음과 같이 변경된다.

(\(34\), \(19\), \(5\), \(36\), \(4\), \(25\), \(12\), \(9\)) =⇒ (\(9\), \(34\), \(19\), \(12\), \(25\), \(4\), \(5\), \(36\))

배열 A의 i번째 원소를 Ai라고 나타내자. “\(1 ≤ i < j ≤ N\)이면 \(A_i \le A_j\) 이다.”가 성립할 때, “배열 A는 단조증가한다”라고 말한다.

정수가 저장된 크기 \(N\)인 배열 A가 주어질 때, 배열 A가 단조증가하도록 정렬하기 위해 필요한 ‘순서 섞기’ 연산의 최소 횟수를 계산하는 프로그램을 작성하시오.

제약
  • \(1 ≤ N ≤ 300,000\)
  • \(1 ≤ A_i ≤ 10^9\)
입력 형식

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

두 번째 줄에 배열 A에 저장된 \(N\)개의 정수 A\(1\), ..., A\(N\)이 공백을 사이에 두고 차례대로 주어진다.

출력 형식

배열 A가 단조증가하도록 정렬하기 위해 필요한 ‘순서 섞기’ 연산의 최소 횟수를 출력한다.

서브태스크
서브태스크점수설명

1

4점

\(N ≤ 8\)

2

9점

답이 \(2\) 이하

3

22점

\(A_i ≤ 2\)

4

18점

\(모든\ A_i가\ 서로\ 다름\)

5

47점

추가 제약 조건 없음

예제 1
입력
3
2 2 5
출력
0
예제 2
입력
6
1 5 8 10 3 2
출력
1
문제 정보

riseoj 작성

출처 올림피아드 > 한국정보올림피아드 > KOI 2020 > 2차 대회 > 고등부 2번

평가 및 의견

순서 섞기

개요
출제자 난이도 Platinum II 플래티넘 II 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

순서 섞기

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8