순열의 슈퍼수
시간 제한1초메모리 제한128 MB
순열이 주어질 때, 가장 긴 증가 부분 수열에 포함되는 모든 값을 오름차순으로 찾아 출력한다.
문제
개의 원소로 이루어진 순열이란 집합 {1, 2, ..., }에 속하는 서로 다른 수들을 나열한 길이 의 수열입니다. 예를 들어 수열 2, 1, 4, 5, 3은 원소가 5개인 순열입니다.
이 문제에서는 순열의 가장 긴 증가하는 부분수열에 주목합니다. 위 예시 순열에서 가장 긴 증가하는 부분수열의 길이는 3이며, 그러한 부분수열은 2, 4, 5와 1, 4, 5로 정확히 두 개 있습니다.
가장 긴 증가하는 부분수열 중 어느 하나에라도 속하는 수를 슈퍼수라고 부릅니다. 순열 2, 1, 4, 5, 3에서 슈퍼수는 1, 2, 4, 5이고, 수 3은 슈퍼수가 아닙니다.
주어진 순열에 대해 모든 슈퍼수를 찾는 것이 여러분의 과제입니다.
다음을 수행하는 프로그램을 작성하세요.
- 표준 입력에서 순열을 읽어 들이고,
- 모든 슈퍼수를 찾은 뒤,
- 찾은 슈퍼수를 표준 출력에 출력합니다.
입력
입력은 두 줄로 이루어집니다. 첫째 줄에는 정수 ()이 하나 주어집니다. 둘째 줄에는 원소가 개인 순열을 이루는 개의 정수가 공백 하나로 구분되어 주어집니다.
출력
출력은 두 줄로 이루어집니다. 첫째 줄에는 입력 순열에 있는 슈퍼수의 개수 을 출력합니다. 둘째 줄에는 슈퍼수들을 증가하는 순서로 공백 하나로 구분하여 출력합니다.