플랫폼
시간 제한2초메모리 제한128 MB
x좌표가 서로 다른 점들이 주어질 때, 다음 점의 x가 더 크고 y가 더 크지 않은 비행을 이어 붙여 가장 긴 경로를 구하고, 그런 최장 경로에 포함되는 모든 점을 출력한다.
문제
올림피아 행성에는 강 위 여러 높이에 고정되어 매달린 관광용 플랫폼들이 있다. 각 플랫폼은 수직 평면 위의 한 점이며 두 좌표로 나타낸다. x좌표는 강의 발원지로부터의 수평 거리이고, y좌표는 수면으로부터의 높이이다. 어떤 플랫폼도 다른 플랫폼 바로 위에 있지 않으므로 모든 x좌표는 서로 다르다.
이 플랫폼들을 행글라이더의 출발 지점으로 다시 활용하려고 한다. 행글라이더는 다음 두 조건을 모두 만족할 때에만 한 플랫폼에서 다른 플랫폼으로 날아갈 수 있다.
- 높이가 같거나 더 낮은 플랫폼으로만 갈 수 있다(도착지의 가 현재 높이 이하).
- 강물이 흐르는 방향을 거슬러 갈 수 없다. 즉, 발원지에서 더 멀리 떨어진 플랫폼(x좌표가 더 큰 플랫폼)으로만 갈 수 있다.
경로란 한 플랫폼에서 다음 플랫폼으로, 다시 그다음 플랫폼으로 이어지는 연속된 비행들의 나열이다. 연속된 비행의 횟수가 가능한 한 가장 많은 경로를 인기 경로라고 부른다. 각 비행의 거리는 상관없다.
적어도 하나의 인기 경로에 속하는 플랫폼을 모두 찾는 프로그램을 작성하여라.
입력
첫째 줄에 테스트 케이스의 수 가 주어진다.
각 테스트 케이스의 첫째 줄에는 플랫폼의 수 이 주어진다(). 이어지는 개의 줄에는 각 플랫폼의 x좌표와 y좌표가 음이 아닌 정수로 주어진다. 한 테스트 케이스 안의 x좌표는 모두 서로 다르다.
출력
각 테스트 케이스마다 두 줄로 이루어진 묶음을 출력한다.
첫째 줄에는 두 정수를 출력한다. 인기 경로에서의 비행 횟수와, 적어도 하나의 인기 경로에 속하는 플랫폼의 총개수이다.
둘째 줄에는 그 플랫폼들의 x좌표를 오름차순으로, 공백 하나로 구분하여 출력한다.
어떤 비행도 불가능한 경우, 첫째 줄은 0 0이고 둘째 줄은 비어 있다.