더 크면 더 똑똑할까?

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

요약
최대 1000마리 코끼리의 몸무게와 IQ 쌍이 주어질 때, 몸무게는 엄격히 증가하고 IQ는 엄격히 감소하도록 배열할 수 있는 가장 큰 부분집합의 크기를 구합니다.
난이도

보통10점 중 4점

유형
동적 계획법, 정렬
정답자
아직 제출이 없습니다

문제

어떤 사람들은 코끼리가 클수록 더 똑똑하다고 생각합니다. 이것이 틀렸음을 보이기 위해, 여러 코끼리의 데이터에서 가능한 한 많은 코끼리를 골라, 무게는 순증가(강한 증가)하면서 IQ는 순감소(강한 감소)하도록 하나의 수열로 나열하려고 합니다.

입력

입력은 여러 마리 코끼리의 데이터로 이루어집니다. 한 줄에 코끼리 한 마리의 정보가 주어지며, 파일의 끝(EOF)에서 입력이 종료됩니다. 각 코끼리의 데이터는 정수 두 개로 이루어지는데, 첫 번째는 무게(킬로그램), 두 번째는 IQ(0.01 IQ 단위)입니다. 두 정수는 모두 1 이상 10000 이하입니다. 데이터에는 최대 1000마리의 코끼리 정보가 들어 있습니다. 두 코끼리의 무게가 같거나, IQ가 같거나, 무게와 IQ가 모두 같을 수도 있습니다.

출력

ii번째 코끼리의 무게와 IQ를 각각 W[i]W[i], S[i]S[i]라고 하자. 다음 두 조건을 모두 만족하도록 코끼리의 부분집합을 골라 어떤 순서 a[1],a[2],…,a[n]a[1], a[2], \ldots, a[n]으로 나열할 수 있다.

W[a[1]]<W[a[2]]<⋯<W[a[n]]W[a[1]] < W[a[2]] < \cdots < W[a[n]]

그리고

S[a[1]]>S[a[2]]>⋯>S[a[n]]S[a[1]] > S[a[2]] > \cdots > S[a[n]]

모든 부등호는 강한 부등호이다(무게는 순증가, IQ는 순감소). 이렇게 고를 수 있는 코끼리의 최대 개수 nn을 한 줄에 출력하시오.

예제2

  1. 예제 1

    입력
    6008 1300
    6000 2100
    500 2000
    1000 4000
    1100 3000
    6000 2000
    8000 1400
    6000 1200
    2000 1900
    
    예상 출력
    4
    
  2. 예제 2

    입력
    1 5
    2 4
    3 3
    4 2
    5 1
    
    예상 출력
    5