luogu#P11515. [CCO 2024] Pizza Party
[CCO 2024] Pizza Party
题目背景
题目描述
Troy 正在完善他最新的计划——“HackCCO”!大家都知道,黑客马拉松最大的吸引力就是免费的食物。因此,为了确保“HackCCO”取得空前的成功,Troy 订购了一辆装满 份披萨的大车,其中从车的顶部往下数第 份披萨的风味是 。
披萨车到达后,Troy 需要将它们按照一定的数量堆放在一张长桌上。为此,他从车顶部逐个取下披萨,并将它们放在桌上,每次要么将披萨放在另一堆披萨的顶部,要么在桌上形成新的堆叠。
饥饿的 HackCCO 参与者们排成一排,依次从桌上取披萨。特洛伊知道队伍中第 个人最喜欢的披萨口味是 。当第 个人走到餐桌前时,如果他们在任何一堆顶部看到他们喜欢的口味的比萨,他们会随机拿走其中任意一个。否则,他们什么都不会拿,会饿着肚子离开餐桌。
Troy 不想让任何人饿着离开餐桌。因此,他请你帮助他找到一种将比萨放在餐桌上的排列方式,使得没有人会饿着离开。此外,在所有这样的排列方式中,Troy 想让你找到一个在餐桌上创建最小数量的堆放的排列方式(毕竟,餐桌只能这么长)。帮助他找到这样的排列方式,或者确定这是不可能的!
输入格式
第一行一个正整数 。
第二行 个正整数 。
第三行 个正整数 。
输出格式
如果不可能按期望来排列披萨,则输出 -1
。
否则,输出应该由三行组成。在第一行输出一个整数 ,表示最小堆数。在第二行输出 个空格分隔的整数 (),表示第 个披萨应该放在第 堆上。
在第三行输出 个空格分隔的整数 (),表示第 个排队的人从第 堆里拿披萨。第 个人拿的披萨需要满足他们的口味需求。
7
1 2 3 2 2 1 3
2 3 1 2 3 2 1
2
1 2 1 2 1 2 2
1 2 2 2 1 2 1
2
1 2
1 1
-1
提示
数据范围
Subtask | 分数 | 约束 |
---|---|---|
Subtask | , | |
Subtask | ,保证 互不相同 | |
Subtask | ,保证 互不相同 | |
Subtask | ||
Subtask |
说明
出题人表明原题中的 Subtask 和 Subtask 可能没有正确解法,故不对 Subtask 和 Subtask 进行评测,故该题满分为 分。
Subtask 为样例。
样例解释 #1
上图是桌子上披萨的排列示意图,红色、黄色、蓝色盒子分别代表口味 、 和 的披萨。