#P15906. [Roi2022]交换

[Roi2022]交换

题目背景

给定一个 nn 位十进制数 xx。可以任意多次交换相邻的两个数位,每次交换会产生一个代价 yy。如果通过 kk 次这样的交换得到了数字 xnewx_{new},则收益等于 xnewk×yx_{new}-k\times y

定义:如果通过交换从 xx 得到了数字 xnewx_{new},并且在此过程中达到了最大可能的收益,则称数字 xnewx_{new} 为最优数字。

例如,当 y=114y=114 时,可以通过交换 33 次将数字 33273327 中的 77 移到最前面,得到最大的收益 73323×114=69907332-3\times114=6990。此时就称 73327332 为最优数字。

题目描述

众所周知,这样的最优数字可能不止一个(对于同一个 xx,它的所有最优数字获得的收益是相等的,但它们的值不相等)。对于给定的 xxyy,需要确定最优数字中的最大值。

输入格式

第一行包含一个由 nn 个十进制数位组成的整数 xx1n1051\le n\le10^5),数字 xx 可能有前导零。

第二行包含一个整数 yy,表示一次交换的代价(1y10161\le y\le10^{16})。

输出格式

输出一个整数 xnewx_{new},表示最优数字中的最大值。数字 xnewx_{new} 的长度为 nn,并且可能包含前导零。

输入输出样例 #1

输入 #1

170
15

输出 #1

710

输入输出样例 #2

输入 #2

170
600

输出 #2

170

输入输出样例 #3

输入 #3

314599
17713

输出 #3

931459

输入输出样例 #4

输入 #4

001
1000

输出 #4

001

输入输出样例 #5

输入 #5

3327
114

输出 #5

7332

说明/提示

Subtask 分值 nn\le yy\le 特殊性质
11 2727 99 10810^8
22 1313 2020
33 1919 10510^5 11
44 2525 10810^8 xx12 组成
55 88
66 101610^{16}