#ABC471F. 拼接(最大化) / Concat (maximize)

拼接(最大化) / Concat (maximize)

题目描述

给定 NN 个由数字组成的字符串 S1,,SNS_1,\ldots,S_N

从中恰好选择 KK 个字符串,并按任意你选择的顺序拼接起来。将得到的字符串(去除多余的前导零后)看作十进制整数,求其可能取到的最大值。

这里规定:若字符串完全由字符 0 组成,则将其去除多余前导零后解释为十进制整数的值定义为 00

输入格式

输入从标准输入给出,格式如下:

  • NN KK
  • S1S_1
  • \vdots
  • SNS_N

输出格式

输出答案。

数据范围

  • 1KN1051 \leq K \leq N \leq 10^5
  • SiS_i 是由数字组成的、长度在 111010(含)之间的字符串。
  • NNKK 均为整数。
3 2
123
45
6
45123

123456 中选择两个字符串拼接,共能得到六个字符串:123451236451234566123645

其中看作十进制整数时的最大值是 4512345123

5 3
00000
00
1
0000
000
1000000000
9 9
0000000001
000000002
00000003
0000004
000005
00006
0007
008
09
90080007000060000050000004000000030000000020000000001

输出答案时不能带有多余的前导零。

子任务设置

  • 子任务 1(165 分):N10N \le 10
  • 子任务 2(165 分):所有 SiS_i 的长度均为 11
  • 子任务 3(220 分):无特殊限制。