실행 시간 제한 | 메모리 제한 |
---|---|
2 초 | 512 MB |
트레이너 민철은 명의 선수들()을 훈련시키고 있으며, 이 선수들은 까지 번호가 매겨져 있습니다. 그들은 트레이너 민철이 매일 아침에 그들을 어떤 순서로 훈련시키는지와 관련된 복잡한 사회적 계층 구조를 가지고 있습니다.
트레이너 민철은 몇 주 동안 그의 선수들의 사회 구조에 대해 개의 관찰을 했습니다(). 각 관찰은 그의 일부 선수들에 대한 순서가 정해진 목록이며, 이 목록에 나타난 순서대로 이 선수들을 훈련시켜야 함을 나타냅니다. 예를 들어, 민철의 관찰 중 하나가 2, 5, 1이라는 목록이라면, 민철은 선수 2를 훈련시킨 후에 선수 5를 훈련시키고, 그리고 나서 선수 1을 훈련시켜야 합니다.
민철의 관찰은 우선순위가 정해져 있어, 그의 목표는 값이 최대가 되도록 훈련 순서를 정하는 것입니다. 이는 처음 개의 관찰에서 설명된 조건을 충족시키는 훈련 순서를 정하기 위함입니다. 만약 여러 훈련 순서가 이 처음 개의 조건을 충족시킨다면, 민철은 번호가 낮은 선수들이 높은 번호의 선수들보다 높은 순위를 차지한다고 믿으므로, 그는 가능한 낮은 번호의 선수들부터 먼저 훈련시키고 싶어합니다.
만약, 여러 훈련 순서가 이 조건을 충족시킨다면, 민철은 사전 순으로 가장 작은 훈련 순서를 사용하고 싶어합니다. 훈련 순서 는 어떤 에 대해 모든 에 대해 이고 인 경우 훈련 순서 보다 사전 순으로 작습니다(다시 말해, 두 훈련 순서는 특정 지점까지 동일하고, 그 지점에서 는 보다 작습니다).
민철이 그의 선수들을 훈련시키는 최적의 순서를 결정하는 데 도움을 주세요
첫 번째 줄에는 과 이 주어집니다. 다음 개의 줄 각각은 한 가지 관찰을 설명합니다. 번째 줄은 관찰 를 설명하며, 관찰에서 나열된 선수들의 수 와 관찰에서 선수들의 순서를 나타내는 개의 정수를 기재하고 시작합니다. 들의 합은 최대 입니다.
개의 공백으로 구분된 정수를 출력하십시오. 이것은 민철이 그의 선수들을 훈련시키는 순서를 나타내는 의 순열입니다.
4 3 3 1 2 3 2 4 2 3 3 4 1
1 4 2 3
여기서, 민철은 4명의 선수를 가지고 있고, 3번 선수 이전에 1번 선수를 훈련하고 3번 선수 이전에 2번 선수를 훈련해야 합니다 (첫 번째 관찰),
그리고 2번 선수 이전에 4번 선수를 훈련해야 합니다 (두 번째 관찰),
그리고 4번 선수 이전에 3번 선수를 훈련해야 하고, 1번 선수 이전에 4번 선수를 훈련해야 합니다 (세 번째 관찰).
첫 번째 두 가지 관찰은 동시에 만족시킬 수 있지만, 민철은 이 모든 기준을 한 번에 만족시킬 수 없습니다.
그 이유는 3번 선수가 1번 선수 이전에 와야 하고, 1번 선수가 3번 선수 이전에 와야 하기 때문입니다.
이는 두 가지 가능한 순서가 있음을 의미합니다: 1 4 2 3과 4 1 2 3, 첫 번째가 사전 순으로 작습니다.
출처: USACO 2018 US Open Contest, Gold Problem 2. Milking Order