PivotOJ

A Pivotal Question

시간 제한: 2000ms메모리 제한: 1024MB출처: ICPC Greater New York 2023BOJ 30524

문제

Quicksort is a recursive sorting algorithm developed in 1959 by Tony Hoare. One of the major steps in the algorithm is the partition\/ step: given an element pp in the array (the pivot\/ element) rearrange the elements in the array as shown below where all the values in XLX_L are p\leq p and all elements in XRX_R are >p> p.

Figure A.1 below shows an array before and after it's been partitioned with the pivot element 1313. Note that the elements in XLX_L and XRX_R are typically not in sorted order and either one of them could be empty.

Figure A.1: An array before and after a partition

How a partition is executed and how a pivot element is selected are fascinating questions but are not of interest to us. What we would like you to do is the following: given an array, determine all the values that could be the pivot value assuming the array has been partitioned, or determine that the array has not been partitioned.

입력

Input starts with a positive integer nn (1n106)(1\leq n\leq 10^6) denoting the size of the array. Following this are nn positive integers indicating the values in the array. All values are unique and 106\leq 10^6.

출력

Output m=m = the number of values in the array that could have served as pivot values to partition the array, followed by the pivot values in the order that they appear in the input. If m>100m > 100 just output the first 100 of these pivot values. Note that a value of m=0m=0 indicates that the array is not partitioned.

예제

예제 1

입력
10 1 11 8 13 53 20 63 99 79 94
출력
3 1 13 63
코드를 제출하려면 로그인하세요.