아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

플랫폼

시간 제한2초메모리 제한128 MB

요약
x좌표가 서로 다른 점들이 주어질 때, 다음 점의 x가 더 크고 y가 더 크지 않은 비행을 이어 붙여 가장 긴 경로를 구하고, 그런 최장 경로에 포함되는 모든 점을 출력한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 정렬, 세그먼트 트리, 구현
정답자
아직 제출이 없습니다

문제

올림피아 행성에는 강 위 여러 높이에 고정되어 매달린 관광용 플랫폼들이 있다. 각 플랫폼은 수직 평면 위의 한 점이며 두 좌표로 나타낸다. x좌표는 강의 발원지로부터의 수평 거리이고, y좌표는 수면으로부터의 높이이다. 어떤 플랫폼도 다른 플랫폼 바로 위에 있지 않으므로 모든 x좌표는 서로 다르다.

이 플랫폼들을 행글라이더의 출발 지점으로 다시 활용하려고 한다. 행글라이더는 다음 두 조건을 모두 만족할 때에만 한 플랫폼에서 다른 플랫폼으로 날아갈 수 있다.

  • 높이가 같거나 더 낮은 플랫폼으로만 갈 수 있다(도착지의 yy가 현재 높이 이하).
  • 강물이 흐르는 방향을 거슬러 갈 수 없다. 즉, 발원지에서 더 멀리 떨어진 플랫폼(x좌표가 더 큰 플랫폼)으로만 갈 수 있다.

경로란 한 플랫폼에서 다음 플랫폼으로, 다시 그다음 플랫폼으로 이어지는 연속된 비행들의 나열이다. 연속된 비행의 횟수가 가능한 한 가장 많은 경로를 인기 경로라고 부른다. 각 비행의 거리는 상관없다.

적어도 하나의 인기 경로에 속하는 플랫폼을 모두 찾는 프로그램을 작성하여라.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다.

각 테스트 케이스의 첫째 줄에는 플랫폼의 수 NN이 주어진다(1<N<1234561 < N < 123456). 이어지는 NN개의 줄에는 각 플랫폼의 x좌표와 y좌표가 음이 아닌 정수로 주어진다. 한 테스트 케이스 안의 x좌표는 모두 서로 다르다.

출력

각 테스트 케이스마다 두 줄로 이루어진 묶음을 출력한다.

첫째 줄에는 두 정수를 출력한다. 인기 경로에서의 비행 횟수와, 적어도 하나의 인기 경로에 속하는 플랫폼의 총개수이다.

둘째 줄에는 그 플랫폼들의 x좌표를 오름차순으로, 공백 하나로 구분하여 출력한다.

어떤 비행도 불가능한 경우, 첫째 줄은 0 0이고 둘째 줄은 비어 있다.

예제1

  1. 예제 1

    입력
    2
    2
    2 3
    4 5
    5
    11 4
    44 5
    22 2
    33 3
    55 1
    
    예상 출력
    0 0
    
    2 4
    11 22 33 55