#P15679. [Bulgarian2023训练营]Teams contest团队座位
[Bulgarian2023训练营]Teams contest团队座位
题目描述
比赛马上就要开始了!来自 所学校的队伍参加比赛,每所学校恰好有两支队伍。队伍们已经入座,但组织者发现,有些同一学校的两支队伍坐得太近了。组织者需要重新安排座位。
所有座位排成一行,相邻两个队伍工作位置之间的距离为 米。组织者希望让同一学校两支队伍之间的最小距离尽可能大。
移动队伍时,组织者必须把该队伍准备好的所有设备搬到新位置。因此,在满足上面目标的所有重新排列方案中,组织者还希望所有队伍旧位置到新位置的距离之和尽可能小。
例如,有学校 的各两支队伍参赛,初始座位顺序为:
其中学校 的两支队伍坐得太近,学校 也是。若改为:
则同一学校的两支队伍之间的距离至少为 米,并且无法做到更大。该例中旧位置到新位置的总移动距离为
并且这是在最大化同校最小距离的前提下能够达到的最小总移动距离。
给定初始座位顺序,请重新排列这些队伍,使得同一学校两支队伍之间的最小距离尽可能大;在所有满足该条件的方案中,还要使队伍移动总距离尽可能小。
输入格式
第一行一个整数 ,表示学校数量(原题英文此处写作 teams,但结合上下文和输入长度应理解为学校数),满足 。
第二行包含 个整数 ,表示初始座位顺序。每个整数表示该队伍所属学校编号。
保证序列中的数都在 到 之间,并且每个数恰好出现两次。
输出格式
输出一行 个整数,表示新的座位顺序。
要求:
- 同一学校两支队伍之间的最小距离尽可能大;
- 在满足 1 的所有方案中,总移动距离尽可能小;
- 若有多个最优答案,输出任意一个即可。
相邻两个整数之间必须恰好有一个空格。
样例
输入
4
1 3 2 2 1 4 4 3
输出
1 3 2 4 1 3 2 4