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

수열 정렬하기

Gold IV 골드 IV
난이도
2s
시간 제한
256MB
메모리 제한
1
맞았습니다!!
1
제출 수
100.0%
정답률
레이팅

의견: 0

설명

길이가 \(N\)인 수열 \(A = [A_1, A_2, \cdots, A_N]\)이 주어진다. 여러분은 다음과 같은 시행을 \(0\)번 이상 자유롭게 할 수 있다.

  1. 양의 정수 \(x\)를 정한다.
  2. 수열 \(A\)의 원소 중 값이 \(x\) 이하인 원소들을 원래 순서대로 추출하여 부분 수열 \(B\)를 만든다.
  3. 수열 \(A\)의 원소 중 값이 \(x\) 초과인 원소들을 원래 순서대로 추출하여 부분 수열 \(C\)를 만든다.
  4. 기존 수열 \(A\)를, \(B\)\(C\)를 순서대로 이어 붙인 수열(\(B + C\))로 대체한다.

수열 \(A\)를 비내림차순(\(A_1 \le A_2 \le \cdots \le A_N\))으로 정렬하기 위해서 최소 몇 번의 시행이 필요한지 계산하는 프로그램을 작성하라.

제약 조건을 만족하는 모든 입력에 대해, 주어진 시행을 통해 수열을 비내림차순으로 정렬하는 방법이 존재함을 증명할 수 있다.

제약
  • 주어지는 모든 수는 정수이다.
  • \(1 \le N \le 300\,000\)
  • 모든 \(i\) (\(1 \le i \le N\))에 대하여 \(1 \le A_i \le N\)
입력 형식

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

그다음 줄에 \(N\)개의 정수 \(A_1, A_2, \cdots, A_N\)이 공백으로 구분되어 차례대로 주어진다.

출력 형식

첫 줄에 수열 \(A\)를 비내림차순으로 정렬하기 위해 필요한 최소 시행 횟수를 출력한다.

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

1

6점

모든 \(i\) (\(1 \le i \le N\))에 대하여 \(A_i \le 2\)이다.

2

15점

\(N \le 15\)

3

23점

\(N \le 100\)

4

27점

\(N \le 750\)

5

33점

모든 \(i, j\) (\(1 \le i < j \le N\))에 대하여 \(A_i \ne A_j\)이다.

6

46점

추가 제약 조건 없음.

예제 1
입력
6
3 4 5 1 2 6
출력
1
설명

다음과 같이 \(1\)번의 시행으로 수열 \(A\)를 비내림차순으로 정렬할 수 있다.

\(x = 2\)로 정하자. 값이 \(2\) 이하인 원소들을 원래 순서대로 추출하면 \(B = [1, 2]\)이고, 값이 \(2\) 초과인 원소들을 원래 순서대로 추출하면 \(C = [3, 4, 5, 6]\)이다. 따라서 수열 \(A\)\([1, 2, 3, 4, 5, 6]\)으로 대체된다.

예제 2
입력
9
1 5 9 9 5 1 1 5 9
출력
2
설명

다음과 같이 \(2\)번의 시행으로 수열 \(A\)를 비내림차순으로 정렬할 수 있다.

  1. \(x = 1\)로 정하자. 값이 \(1\) 이하인 원소들을 추출하면 \(B = [1, 1, 1]\), 값이 \(1\) 초과인 원소들을 추출하면 \(C = [5, 9, 9, 5, 5, 9]\)이다. 따라서 수열 \(A\)\([1, 1, 1, 5, 9, 9, 5, 5, 9]\)로 대체된다.
  2. \(x = 5\)로 정하자. 값이 \(5\) 이하인 원소들을 추출하면 \(B = [1, 1, 1, 5, 5, 5]\), 값이 \(5\) 초과인 원소들을 추출하면 \(C = [9, 9, 9]\)이다. 따라서 수열 \(A\)\([1, 1, 1, 5, 5, 5, 9, 9, 9]\)로 대체된다.

\(2\)번보다 적은 횟수의 시행으로는 수열 \(A\)를 비내림차순으로 정렬하는 것이 불가능함을 증명할 수 있다.

문제 정보

riseoj 작성

출처 올림피아드 > 한국정보올림피아드 > KOI 2026 > 1차 대회 > 초등부 3번 / 중등부 2번

평가 및 의견

수열 정렬하기

개요
출제자 난이도 Gold IV 골드 IV 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

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

풀이 제출

수열 정렬하기

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