QOJ.ac

QOJ

Time Limit: 4 s Memory Limit: 256 MB Total points: 100

#957. 할당 문제

Statistics

우리 회사에는 $m$개의 공석이 있고, 이 자리에 지원한 $n$명의 후보자가 있습니다 ($n \ge m$). 당연히 우리는 최고의 후보자를 채용하고자 합니다. 한 명의 후보자를 두 개 이상의 서로 다른 직무에 채용할 수는 없으므로, 정확히 $m$명의 후보자를 채용해야 합니다. 각 직무에 서로 다른 후보자를 선택하는 방식을 배정(assignment)이라고 부릅니다. 두 배정은 어떤 직무에 대해 채용된 후보자가 서로 다를 경우 서로 다른 것으로 간주합니다.

이익을 나타내는 행렬 $A$가 존재합니다. $A_{ij} \ge 0$은 $i$번째 직무에 $j$번째 후보자를 채용했을 때 얻는 이익을 나타냅니다. 우리는 모든 채용에서 얻는 이익의 합을 최대화하고자 합니다. 이익의 합을 최대화하는 배정을 최적 배정이라고 합니다.

행렬 $A$가 주어진다면 최적의 후보자를 선택하는 것은 쉬울 것입니다. 불행히도 인사팀의 세계는 그렇게 단순하지 않으며, 행렬 $A$를 제공해 줄 수 없습니다. 모든 후보자를 면접한 후에도 우리는 두 후보자가 같은 직무에서 어떻게 행동할지 비교할 수 있을 뿐입니다. 더 정확히 말하면, 우리는 길이 $n$인 $m$개의 순열 $P_i$를 알고 있습니다. 모든 $1 \le i \le m$과 $1 \le x < y \le n$에 대하여 $A_{iP_{ix}} > A_{iP_{iy}}$가 성립합니다. 즉, 각 직무에 대해 모든 후보자의 순위를 알고 있는 셈입니다.

어떤 후보자가 유망하다는 것은, 주어진 모든 순위와 일치하는 행렬 $A$가 존재하며, 이 행렬에 대해 유일한 최적 배정이 존재하고 그 배정에서 해당 후보자가 채용되는 경우를 말합니다.

더 철저한 검증을 수행할 수 있도록 모든 유망한 후보자를 찾아야 합니다.

입력

첫 번째 줄에는 두 정수 $n$과 $m$ ($1 \le m \le 11$, $m \le n \le 1000$)이 주어집니다. 이는 후보자의 수와 직무의 수를 의미합니다.

다음 $m$개의 줄에는 각 직무에 대한 순위가 주어집니다. $i$번째 줄에는 $1$부터 $n$까지의 숫자로 이루어진 순열 $P_{i1}, P_{i2}, \dots, P_{in}$이 포함되어 있습니다.

출력

첫 번째 줄에는 유망한 후보자의 수를 출력하고, 두 번째 줄에는 유망한 후보자의 번호를 오름차순으로 출력합니다.

예제

입력 1

4 2
1 2 4 3
1 3 4 2

출력 1

3
1 2 3

입력 2

4 2
1 4 3 2
2 3 4 1

출력 2

2
1 2

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#317EditorialOpen题解jiangly2026-01-09 10:10:43View

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.