[BOJ 15492] 뒤집기
View as PDF
Submit solution
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text
Points:
5
Time limit:
3.0s
Memory limit:
512M
Problem types
Allowed languages
길이가 N인 수열이 있다. 이 수열은 같은 수를 여러 개 포함할 수 있고 모든 수는 231 미만의 자연수이다.</p>
이 수열을 길이가 0이 아닌 두 부분으로 나누어서 두 부분 각각 순서를 반대로 한 뒤 다시 이어 붙이려고 한다. 이렇게 해서 생성되는 모든 수열들을 나열하고 싶어하는 kcm1700은 당신에게 사전순으로 나열할 경우 어떤 수열이 가장 먼저 오게 될 것인지 물어보았다. 사전순이라 하는 것은 첫 번째 수가 작은 것이 먼저 오고, 첫 번째 수가 같다면 두 번째 수가 작은 것이 먼저 오고, 두 번째 수도 같다면 세 번째 수가…….
kcm1700이 당신에게 물어본, 위 규칙으로 생성되는 수열을 사전 순으로 나열했을 때 가장 첫 번째로 나오는 수열을 출력하는 프로그램을 작성하여라.
입력 형식
첫째 줄에 양의 정수 N(2 ≤ N ≤ 4,000,000)이 하나 주어진다. 둘째 줄에는 수열을 이루는 N개의 수가 빈 칸을 사이에 두고 차례대로 주어진다.
출력 형식
첫째 줄에 사전순으로 나열했을 때 가장 먼저 나오는 수열을 출력하여라.
예제 입력
10
2 1 3 1 2 1 3 1 3 1
예제 출력
1 2 1 3 1 2 1 3 1 3
힌트
2 1 3 1 2 1 // 3 1 3 1 로 나누고 각각 뒤집으면 1 2 1 3 1 2 // 1 3 1 3 -> 1 2 1 3 1 2 1 3 1 3 이 되는데 이것이 가능한 것들 중 사전 순으로 첫 번째인 수열이다.
Comments