#band. 2026提高组模拟赛09-T1 程老师的手环
2026提高组模拟赛09-T1 程老师的手环
时间限制:1000ms 内存限制:512MB
题目描述
程老师的朋友开了一家手工艺品店,招牌产品是串珠手环,在老街上卖了十年,回头客不少。最近店里进了一把 颗珠子,第 颗珠子上刻着一个整数 (是它的"灵光值",老师傅用秘传的法子一颗颗测出来的)。老板想挑个吉日把这 颗珠子全部串成一条手环——一字排开串好,两端再系上搭扣就能上架。
老板有个坚持了十年的怪讲究:手环上相邻两颗珠子的灵光值之和,不能被 3 整除。按他的说法,"逢三必乱"——两颗凑出个 3 的倍数,整条手环的"气"就散了。比如灵光值 和 的珠子不能挨着(),两颗灵光值 的珠子也不能挨着(),但 和 挨着没事(), 和 挨着也没事()。常有顾客笑他迷信,他也不恼,只说十年间的退货从没出过在这条规矩上的。
珠子是混在盒子里随便抓出来的,顺序得重新排。老板还有第二个讲究:店里陈列的所有手环都按统一规范串制——在全部符合"逢三必乱"的排法里,要挑字典序最小的那种。什么叫字典序最小?把两种排法的灵光值从第一颗开始依次读出来比较,找到第一处不一样的位置,那个位置上值更小的排法就更小。规范这么定,是为了不同批次的货摆在一起整整齐齐,老顾客闭着眼都知道怎么挑。
程老师被叫来帮忙:把 颗珠子排成符合要求的手环,输出字典序最小的排法。如果怎么排都满足不了老板的讲究,输出 -1,让他趁早死心换一批珠子——这种事以前也发生过,一整盒珠子里全是一个路数的,怎么倒腾都违规,最后只能整批退回。
输入格式
第一行一个整数 ,表示珠子数量。
第二行 个整数 ,表示每颗珠子的灵光值。
输出格式
如果存在合法排法,输出一行 个整数,用空格隔开,表示字典序最小的排法。
如果不存在,输出一行 -1。
数据范围
| 测试点编号 | 特殊性质 | |
|---|---|---|
| 1 ~ 2 | 无 | |
| 3 ~ 6 | ||
| 7 ~ 8 | ||
| 9 ~ 10 | A | |
| 11 ~ 12 | B | |
| 13 ~ 16 | 无 | |
| 17 ~ 20 |
- 特殊性质 A:所有灵光值都不是 3 的倍数。
- 特殊性质 B:所有灵光值模 3 的余数都相同。
- 对于全部数据,,。
样例
样例 1
输入:
5
3 1 2 6 4
输出:
1 3 2 6 4
解释:逐位验证:,,,,都不是 3 的倍数,合法。字典序上还有没有更小的?第一颗最小只能放 ;第二颗候选里 不行( 违规),只能放 ;第三颗放 ( 可以);第四颗候选里 不行( 违规),放 ;最后放 。每一位都取了能取的最小值,这就是字典序最小的排法。
样例 2
输入:
3
3 3 3
输出:
-1
解释:三颗珠子的灵光值都是 3 的倍数,任取两颗挨着,和都是 3 的倍数。三颗珠子总要有一颗和另一颗相邻,怎么排都违规,输出 -1。
样例 3
输入:
3
2 2 3
输出:
2 2 3
解释:按 排:,,都合法。第一颗放最小的 ,第二颗放 ( 可以),第三颗放 ,这就是字典序最小的排法。
- ID
- 667
- 类型
- 传统题
- Time Limit
- 1000ms
- Memory Limit
- 512MiB
- 上传者
相关
在下列比赛中: