跳转至

数位合并的最大值与最小值

预估时间限制:0.5 秒。内存限制:128 MB。

实际时限以标准程序在目标环境的最慢用例中位时间乘以 \(2\) ,按 \(0.5\) 秒向上取整。参考环境见评测说明。

背景故事

一座数字展馆有一块可合并数位的显示板。管理员希望知道,只操作一次,显示的数最大和最小能变成多少。

(本故事由GPT-6重写)

形式化问题描述

给定一个有 \(n\) 位的 \(k\) 进制正整数,数位从高到低为 \(a_1,\ldots,a_n\) .恰好选择一次两个位置 \(i<j\) ,令 \(s=a_i+a_j\) ,并同时执行以下操作:

  • 若 \(s\ge k\) ,将位置 \(i\) 的数字改为一、位置 \(j\) 的数字改为 \(s-k\) ,其他位置不变。
  • 若 \(s<k\) ,删除位置 \(i\) ,将原位置 \(j\) 的数字改为 \(s\) .其余数位保持相对顺序。删除数位会缩短数字,并非把该位改成零。

最后删除所有前导零。分别求可能得到的最大整数和最小整数。两项答案可以使用不同的两个位置。

输入格式

第一行两个整数 \(n,k\) .第二行 \(n\) 个以十进制书写、用空格分隔的整数 \(a_1,\ldots,a_n\) ,其中 \(a_1\) 是最高位。

输出格式

输出两行,依次表示最大值和最小值。每行从高到低输出结果的各个 \(k\) 进制数位;每个数位以十进制整数书写,相邻数位用一个空格分隔,不输出前导零。

样例

样例 1

输入

4 10
1 8 9 9

输出

1 8 9 0
9 9 9

样例 2

输入

5 10
7 0 0 1 1

输出

7 0 1 1
1 8

样例 3

输入

3 10
1 2 3

输出

3 3
1 5

样例解释

样例一最大值合并第一位和第四位,原来的最高位一保持不变,最低位变成零。最小值合并第一位和第二位,得到三个九。样例二的最小值合并第一位与第五位,删除最高位和随后的两个前导零,得到 \(1,8\) .样例三没有任何数位对会进位。

数据范围与保证

\(2\le n\le10^6\) , \(2\le k\le10^9\) , \(1\le a_1<k\) , \(0\le a_i<k\) . 输入字符总数不超过 \(21\times10^6\) .

分值比例 额外条件
100% 无额外条件