짐꾼

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

요약
열린 왼쪽 면에서 목적지까지 다른 상자나 벽과 겹치지 않고 밀어 넣을 수 있는지 상자 순서대로 판정하고, 놓을 수 없는 상자의 ID를 출력한다.
난이도

어려움10점 중 8점

유형
기하, 시뮬레이션, 구현, 그리디
정답자
아직 제출이 없습니다

문제

대형 창고를 관리하는 담당자가 보관을 위해 배달될 많은 상자를 기다리고 있다.

창고는 왼쪽 아래 꼭짓점이 (0,0)(0, 0), 오른쪽 위 꼭짓점이 (Depth,Frontage)(\text{Depth}, \text{Frontage})인 직사각형이다. 세 변은 벽으로 막혀 있고, 왼쪽 변(yy축에 놓인 변)만 열려 있다.

상자를 지정된 보관 위치로 옮길 때, 짐꾼은 상자를 창고 바닥 위로 밀거나, 다른 상자의 옆면을 따라 미끄러뜨리거나, 다른 상자나 창고 벽에 닿지 않게 들어 옮길 수 있다. 상자는 회전시킬 수 없으며, 다른 상자나 창고 벽과 겹쳐서는 안 된다(맞닿는 것은 허용된다). 한번 지정된 위치에 놓인 상자는 다시 움직일 수 없다.

어떤 상자를 목적지까지 옮길 수 없으면 그 상자는 거부(reject)되며, 거부된 상자는 이후 상자의 배치를 방해하지 않는다.

입력

첫 줄에는 처리할 테스트 케이스의 수가 주어진다.

각 테스트 케이스의 첫 줄에는 세 정수 BB, Depth\text{Depth}, Frontage\text{Frontage}가 주어지며, BB는 상자의 개수이다. 이어지는 BB개의 줄에는 각각 다섯 정수 ID X Y W H가 공백 하나로 구분되어 주어진다.

  • ID — 각 상자의 고유 번호
  • X, Y — 목적지에서 상자의 왼쪽 아래 꼭짓점 좌표
  • W, H — 상자의 너비와 높이

상자는 입력에 주어진 순서대로 처리한다.

제약:

  • 0<B<2000 < B < 200
  • 1<Depth,Frontage<10000001 < \text{Depth}, \text{Frontage} < 1000000
  • 1<ID<10001 < \text{ID} < 1000
  • 1<X,W<Depth1 < X, W < \text{Depth}
  • 1<Y,H<Frontage1 < Y, H < \text{Frontage}

출력

각 테스트 케이스마다 먼저 Case와 테스트 케이스 번호(0부터 시작)를 출력한다. 그다음, 배치할 수 없는 각 상자에 대해 Reject와 그 상자의 ID를 공백 하나로 구분하여 한 줄에 출력한다. 거부된 상자는 입력에 나타난 순서대로 나열해야 한다.

예제3

  1. 예제 1

    입력
    1
    5 30 20
    7 3 1 8 15
    9 24 1 7 3
    11 12 14 8 5
    13 14 8 10 3
    15 15 4 5 3
    
    예상 출력
    Case 0
    Reject 9
    Reject 11
    
  2. 예제 2

    입력
    1
    1 100 100
    2 10 10 20 20
    
    예상 출력
    Case 0
    
  3. 예제 3

    입력
    1
    1 100 100
    5 90 10 20 20
    
    예상 출력
    Case 0
    Reject 5