#P14190. [ICPC 2024 Hangzhou R] Dividing Sequence
[ICPC 2024 Hangzhou R] Dividing Sequence
Description
Alice 收到了一串由她的邻居们构造的序列 。由于 Alice 不喜欢过长的序列,她决定将序列分成两个(可能为空)序列 和 ,再还给她的邻居们。她分割的方式需要满足以下约束条件:
- 和 都是 的子序列,且 的每一个元素都会被分配到 或 中的恰好一个序列。
- 在字典序上小于等于 。
在这里,我们定义长度为 的序列 在字典序上小于长度为 的序列 ,当且仅当满足下列条件之一:
- 且 是 的前缀。
- 存在整数 ,使得对于所有 有 且 。
作为一位公平的女孩,Alice 希望分得公平,使得 的字典序尽可能小。请你告诉 Alice, 能取得的字典序最小的情况。
Input Format
有多组测试数据。输入的第一行包含一个整数 (),表示测试数据组数。对于每组测试数据:
第一行包含一个整数 (),表示序列 的长度。
第二行包含 个整数 (),表示序列 的第 个元素。
保证所有测试数据中 的总和不超过 。
Output Format
对于每组测试数据,输出两行。第一行包含一个整数 ,表示最优情况下 的长度。第二行包含 个用空格分隔的整数 ,表示最优情况下 的序列。
5
5
3 1 2 3 2
3
1 1 2
3
3 3 3
5
1 3 1 3 1
5
2 2 1 3 3
1
3
3
1 1 2
2
3 3
3
1 3 1
4
2 1 3 3
Hint
由 ChatGPT 5 翻译
京公网安备 11011102002149号