포럼
문제 USACO0672

지게차 자격증

설명

농부 존은 지게차 자격증을 따기 위해 훈련 중이다! 훈련의 일환으로, 그는 오래된 창고에서 \(1\)부터 \(N\)까지 편리하게 번호가 붙은 \(N\) (\(1 \le N \le 10^5\))개의 상자를 치워야 한다.

상자들은 2차원 평면 위의 축에 평행한 직사각형으로 모델링할 수 있으며, \(+x\) 방향이 동쪽이고 \(+y\) 방향이 북쪽이다. 상자 \(i\)의 남서쪽 모서리는 \((x_{i1},y_{i1})\), 북동쪽 모서리는 \((x_{i2},y_{i2})\)에 있다. 모든 좌표는 \([1, 2N]\) 범위의 정수이며, 서로 다른 두 직사각형의 어떤 두 모서리도 같은 \(x\) 또는 \(y\) 좌표를 공유하지 않는다. 모든 상자는 넓이가 0이 아니며, 어떤 두 상자도 겹치지 않는다.

농부 존은 창고의 남서쪽 입구를 통해 상자를 하나씩 빼낼 계획이다. 하지만 지게차의 물리적 한계 때문에, 어떤 상자의 북동쪽 모서리보다 남쪽인 동시에 서쪽에 다른 상자의 일부라도 놓여 있으면 그 상자를 빼낼 수 없다.

\(N=4\)인 예시가 아래에 나와 있다. 상자 \(4\)를 빼내려면 음영 처리된 영역에 다른 상자가 없어야 한다. 상자 \(2\)\(3\)은 상자 \(4\)를 빼내는 것을 막지만, 상자 \(1\)은 그렇지 않다.

농부 존이 모든 상자를 빼내는 방법을 결정하도록 도와라! 코드는 정수 플래그 \(M\)으로 정의되는 두 가지 서로 다른 모드로 동작해야 한다.

  • 모드 1 (\(M = 1\)): 유효한 상자 제거 순서를 나타내는 \(1, \dots, N\)의 순열을 생성한다. 유효한 순서가 여러 개라면 아무거나 찾으면 된다. 그러한 순서가 항상 존재함을 증명할 수 있다.
  • 모드 2 (\(M = 2\)):\(k = 1, \dots, N\)에 대해, 상자 \(1, \dots, k - 1\)이 이미 제거된 상태에서 농부 존이 상자 \(k\)를 제거할 수 있으면 \(\texttt{1}\)을, 아니면 \(\texttt{0}\)을 출력한다.

Problem credits: Austin Geng

제약

SCORING

  • 입력 3-5: \(M = 1\), \(N\le 1000\).
  • 입력 6: \(M = 2\), \(N \le 1000\).
  • 입력 7-13: \(M = 1\), 추가 제약 없음.
  • 입력 14-16: \(M = 2\), 추가 제약 없음.

Problem credits: Austin Geng

입력 형식

각 입력은 \(T\) (\(1 \le T \le 10\))개의 독립적인 테스트 케이스로 구성된다. 각 입력에서 모든 \(N\)의 합이 \(5 \cdot 10^5\)를 넘지 않음이 보장된다.

입력의 첫째 줄에 \(T\)\(M\)이 주어진다. (\(M\)은 모든 테스트 케이스에서 동일함에 유의하라.) 각 테스트 케이스는 다음과 같은 형식으로 주어진다.

  • 첫째 줄에 정수 \(N\)이 주어진다.
  • 다음 \(N\)개의 줄에 각각 공백으로 구분된 네 정수 \(x_{i1}, y_{i1}, x_{i2}, y_{i2}\)가 주어지며, 이는 상자 \(i\)의 남서쪽 모서리와 북동쪽 모서리의 위치이다.
출력 형식

각 테스트 케이스에 대해:

  • \(M = 1\)이면, 공백으로 구분된 \(N\)개의 정수를 한 줄에 출력하며, \(j\)번째 정수는 \(j\)번째로 제거할 상자의 번호이다.
  • \(M = 2\)이면, 각 \(k = 1, \dots, N\)에 대한 답을 나타내는 \(N\)개의 문자로 이루어진 이진 문자열을 한 줄에 출력한다.
예제 1
입력
2 1
4
1 6 2 8
6 2 7 3
3 1 4 7
5 4 8 5
3
1 5 3 6
4 1 5 2
2 3 6 4
출력
1 3 2 4
2 3 1
설명

The first test case corresponds to the \(N = 4\) example above. Box \(1\) is not
blocked by anything, box \(3\) is blocked by box \(1\), box \(2\) is blocked by box
\(3\), and box \(4\) is blocked by boxes \(2\) and \(3\).

예제 2
입력
2 2
4
1 6 2 8
6 2 7 3
3 1 4 7
5 4 8 5
3
1 5 3 6
4 1 5 2
2 3 6 4
출력
1011
011
설명

For the first test case, box \(2\) is blocked by box \(3\), so Farmer John cannot
remove it before removing box \(3\).

문제 정보

riseoj 작성

출처 올림피아드 > USACO > 2024-2025 > US Open > Platinum

태그

평가 및 의견

Forklift Certified

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 1 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

Forklift Certified

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8