문제
1 ~ N까지 N개의 수가 임의의 순서로 나열되어 있다.
수열의 각 수를 A[1], A[2], ... A[N]이라고 할 때,
i < j 이고 A[i] > A[j] (1 <= i < j <= N)인 경우
A[i]와 A[j]는 같은 그룹으로 한다.
예를 들어 3 1 2 5 6 4 수열이 주어졌다고 하자.
이때 3과 1, 3과 2는 위 조건을 만족하므로 같은 그룹이 된다.
따라서 1 2 3은 같은 그룹이다.
또한 5와 4, 6과 4가 위 조건을 만족하므로 같은 그룹이 된다.
따라서 4 5 6도 같은 그룹이다.
수열을 입력받아 위 조건에 맞게 그룹을 나누고
그 결과를 출력하는 프로그램을 작성하시오.
입력
첫 행에 수열의 길이 N ( 1 ~ 2,000,000)이 주어진다.
두 번째 행이 수열의 각 수가 공백을 구분하여 주어진다.
출력
첫 행에 그룹 수를 출력한다.
두 번째 행부터 각 그룹의 정보를 행 단위로 출력한다.
그룹 정보의 첫 수는 그룹의 개수이다. 이어서 그룹의 수를 오름차순으로 출력한다.
여러개의 그룹을 출력하는 경우 그룹에 속한 수중에 가장 작은 수를 기준으로
오름차순으로 출력해야 한다.
예제
6
3 1 2 5 6 4
2
3 1 2 3
3 4 5 6
출처
comkiwer