#P9467. [EGOI2023] Carnival General / 狂欢节总管

[EGOI2023] Carnival General / 狂欢节总管

题目背景

Day 2 Problem A.

题面译自 EGOI2023 carnival

题目描述

每四年,隆德的学生都会聚到一起并举办隆德狂欢节。几天之内,公园内会挤满帐篷,并举办各种各样的庆祝活动。负责组织这一切的人被称为狂欢节总管。

共有 NN 个狂欢节,每个狂欢节都有不同的总管。这些总管按时间顺序被编号为 00N1N-1。每个总管 ii 都给出了他们对于前任总管的评价,他们公布了总管 0,1,,i10,1,\cdots,i-1 从好到坏的排名。

下一届隆德狂欢节将于 2026 年举办。在此期间,所有曾经的狂欢节总管聚在一起拍了张合照。然而,如果总管 iijj(其中 i<ji < j)最终紧挨着对方,且 iijj 给出的排名中严格位于后一半,那么就会很尴尬。

例如:

  • 如果总管 44 给出的排名是 3 2 1 0,那么 44 可以紧挨着 33 或者 22 站,但不能紧挨着 11 或者 00
  • 如果总管 55 给出的排名是 4 3 2 1 0,那么 55 可以紧挨着 4,3,24,3,2 站,但不能紧挨着 11 或者 00

下图为样例 11。其中,总管 55 紧挨着总管 2233,且总管 44 只紧挨着总管 22

你已知所有总管给出的排名。你的任务是将所有总管 0,1,,N10,1,\cdots,N-1 安排到一排,使得如果 iijj 紧挨着(其中 i<ji < j),那么 ii 并非严格位于 jj 给出排名的后一半。

输入格式

第一行一个整数 NN,表示总管总数。

接下来 N1N-1 行包含所有排名。其中的第一行是总管 11 给出的排名,第二行是总管 22 给出的排名,以此类推直到总管 N1N-1。总管 00 不在输入中,因为总管 00 没有任何前任总管可供排名。

总管 ii 的排名是一个长度为 ii 的列表 pi,0,pi,1,,pi,i1p_{i,0},p_{i,1},\cdots,p_{i,i-1},其中每个整数从 00i1i-1 且恰好出现一次。具体地,根据总管 ii 的排名,pi,0p_{i,0} 是最好的总管,pi,i1p_{i,i-1} 是最差的总管。

输出格式

输出一列整数,一个整数 0,1,,N10,1,\cdots,N-1 的排列,使得对于每对相邻整数,不存在一个在另一个排名的后一半。

可以证明一定有解。如果有多解,你可以输出任意一个。

6
0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
4 2 5 3 1 0
5
0
0 1
0 1 2
0 1 2 3
2 0 4 1 3
4
0
1 0
0 2 1
3 0 1 2

提示

样例 11 解释

样例 11 符合子任务一的要求。在样例中,总管 2233 都不能紧挨着总管 00 站,总管 4455 都不能紧挨着总管 0011 站。样例输出见上图。


样例 22 解释

样例 22 符合子任务二的要求。在样例中,总管 22 不能紧挨着总管 11 站,总管 33 不能紧挨着总管 22 站,总管 44 不能紧挨着总管 3322 站。


样例 33 解释

样例 33 符合子任务三的要求。在样例中,只有 (1,3)(1,3)(0,2)(0,2) 两对总管不能彼此紧挨着站。因此,如果安排为 3 0 1 2,并不会有冲突。另一种可能的答案是 0 1 2 3


数据范围

对于全部数据,2N1032\le N\le 10^30pi,0,pi,1,,pi,i1i10\le p_{i,0},p_{i,1},\cdots,p_{i,i-1}\le i-1

  • 子任务一(1111 分):总管 ii 给出的排名为 i1,i2,,0i-1,i-2,\cdots,0
  • 子任务二(2323 分):总管 ii 给出的排名为 0,1,,i10,1,\cdots,i-1
  • 子任务三(2929 分):N8N\le 8
  • 子任务四(3737 分):无特殊限制。