C1008 - 组最小的数相加

题目描述

给定数字0 - 9各若干个。你可以以任意顺序排列这些数字,但是必须全部使用,目标是使得最后得到的数尽可能小(注意0不能作为首尾)。

例如,给定2个0,2个1,3个5,1个8,得到的最小的数就是10015558

现给定两组这样数字,每组10个,请编写程序输出这两组数能组成的两个最小的数相加之后的结果

输入格式

共2行

第1行,10个非负数,顺序表示数字0,数字1,数字2...数字9的个数,整数使用空格分隔

第2行,10个非负数,顺序表示数字0,数字1,数字2...数字9的个数,整数使用空格分隔

每组数中的10个数字的总个数不超过50,且至少拥有1个非0数字

输出格式

1行,输出这两组数能够组成的最小的数相加之后的结果

输入输出样例

输入样例 输出样例
2 2 0 0 0 3 0 0 1 0
3 1 0 0 1 2 3 1 0 0
10014572225

样例说明

2 2 0 0 0 3 0 0 1 0 能组成的最小的数是:10015558

3 1 0 0 1 2 3 1 0 0 能组成的最小的数是:10004556667

两个最小的数相加的结果是:10014572225

数据范围与提示

50%的数据:每组输入的10个数字的总个数不超过8(也就是组成的最小数最多是8位),且至少拥有1个非0数字

100%的数据:输入的10个数字的总个数不超过50(也就是组成的最小数最多是50位),且至少拥有1个非0数字

测试点数目

共10个测试点,每个测试点10分

时间与内存限制

每个测试点时间:1000ms(1.0s),内存:256MiB

输入输出模式

本OJ支持两种输入输出模式

1. 标准输入输出模式:
直接从标准输入和标准输出读写数据,不需要使用freopen进行文件输入输出重定向
2. 文件输入输出模式(国内信奥赛输入输出模式):
从文件中读写数据,需要使用freopen进行输入输出重定向
本题输入文件名为:C1008.in,输出文件名为:C1008.out