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

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

겹쳐 넣는 화분 상자

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

요약
각 상자를 회전시켜 세 변이 모두 다음 상자보다 짧아지도록 겹쳐 넣을 수 있는 상자를 가장 많이 고합니다.
난이도

보통10점 중 5점

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

문제

관목을 심어 주는 일이 끝날 때마다 정원사 로저는 빈 화분 상자를 수레에 잔뜩 싣고 돌아온다. 여기서 화분 상자는 한 면이 뚫려 있는 나무 상자다.

화분 상자 nn개가 주어진다. 이 중에서 서로 겹쳐 넣을 수 있는 상자를 최대 몇 개까지 고를 수 있는지 구한다. 고른 상자를 작은 것부터 늘어놓았을 때 가장 작은 상자가 두 번째 상자 안에 들어가고, 두 번째 상자가 세 번째 상자 안에 들어가고, 이런 관계가 마지막 상자까지 이어져야 한다.

상자 bib_i를 적당히 회전했을 때 세 변의 길이가 모두 상자 bjb_j의 대응하는 변보다 짧으면 bib_i는 bjb_j 안에 들어간다. 상자는 어느 방향으로든 회전할 수 있다.

입력

입력은 상자 묶음 여러 개로 이루어지고, 묶음의 개수는 미리 알려 주지 않는다. 각 묶음의 첫 줄에는 상자의 개수 nn (0≤n≤5000 \le n \le 500)이 주어진다. 이어지는 nn개의 줄에는 상자 하나의 길이, 너비, 높이가 주어진다. 세 값은 모두 1000 이하의 양의 정수이고, 앞의 두 수 뒤에는 각각 공백, 소문자 x, 공백이 붙는다. 즉 한 줄은 길이 x 너비 x 높이 꼴이다.

nn이 -1이면 입력이 끝난다.

출력

상자 묶음마다 완전히 겹쳐 넣을 수 있는 부분집합의 최대 크기를 한 줄에 하나씩 출력한다. 상자가 하나도 없는 묶음의 답은 0이다.

예제1

  1. 예제 1

    입력
    5
    145 x 472 x 812
    827 x 133 x 549
    381 x 371 x 900
    271 x 389 x 128
    718 x 217 x 491
    4
    432 x 123 x 139
    942 x 844 x 783
    481 x 487 x 577
    677 x 581 x 701
    -1
    
    예상 출력
    2
    4