@sevenstd@集训营所有
召集代码中
舞台拼色
时间限制:1000ms
内存限制:128MB
在一场大型文艺汇演中,共有来自不同地区的代表队参与表演。每个代表队的成员穿着统一颜色的服装,用编号表示其颜色。
导演希望通过一系列调度操作,让舞台上的演员最终呈现出一幅理想的颜色排列效果。
共有 n 个代表队,每个代表队有足够多的成员,且第 i 个代表队的服装颜色编号为 i。
舞台上有一排位置,共 m 个,从左到右编号为 1 到 m。开始时舞台上没有演员。
导演将进行若干次操作,每次操作选择一个尚未使用过的代表队,并指定一个区间 [L,R]。该代表队的成员会占据舞台上从第 L 到第 R 的所有位置:
如果某个位置上已经有演员,则原演员会被替换;
新上场的演员全部来自同一个代表队,因此这些位置的颜色会被统一为该代表队的编号。
每个代表队最多只能被使用一次。
现在给定导演希望最终舞台上从左到右的颜色序列 a
1
,a
2
,…,a
m
。
你的任务是:构造一组操作,使得经过这些操作后,舞台上的颜色排列恰好等于目标序列。
如果无法实现,输出 −1。
输入格式
第一行包含两个整数 m,n,表示舞台位置数量和代表队数量。
第二行包含 m 个整数 a
1
,a
2
,…,a
m
(1≤a
i
≤n),表示目标颜色序列。
输出格式
第一行输出一个整数 k。
若无解,输出 −1;
否则,k 表示需要进行的操作次数。
若 k
=−1,接下来输出 k 行,每行三个整数 c
i
,L
i
,R
i
:
表示第 i 次操作选择编号为 c
i
的代表队,
并让其成员占据区间 [L
i
,R
i
]。
所有 c
i
必须互不相同。
如果存在多种可行方案,输出任意一种即可。