问题1244--4.比k大的数

1244: 4.比k大的数

[命题人 : ]
时间限制 : 1.000 sec  内存限制 : 128 MB

题目描述

一个不含0的 n 位数,其中值等于 i 的数码有 c个( 1 ≤ i ≤ 9 )。在这个 n 位数的所有可能的值中,比k大的值最小是多少?




【样例输入1】
3 213
1 1 1 0 0 0 0 0 0
【样例输出1】
231
样例输入2
4 4000
1 0 2 1 0 0 0 0 0
样例输出2
4133
样例输入3
3 9999
1 1 1 0 0 0 0 0 0
样例输出3
-1
样例输入4
21 791823456795285473500
1 2 2 3 2 3 2 3 3
样例输出4
791823456795286344689

【样例1说明】
有1个1、1个2、1个3,可能的值有123,132,213,231,312,321,共6个。其中,比k= 213大的最小值是231。
【样例2说明】
有1个1、2个3、1个4,可能的值有1334,1343,1433,3134,3143,3314,3341,3413,3431,4133,4313,4331共12个。其中,比k= 4000大的最小数是4133。
【样例3说明】
有1个1、1个2、1个3,可以得到的最大值321都比k =9999小,所以无法得到比k大的值。
【样例4说明】
输入输出可能超过64位整数类型范围。


【数据范围】
对于25%的数据,n≤9; k ≤ 109
对于50%的数据,n ≤200 ; k ≤ 10200
对于100%的数据,1≤n ≤500000 ; 1≤k ≤10500001;
ci ≥0,c1+c2 +c3+ c4+c5+c6+ c7+c8 +c9 = n。


输入

第1行,2个正整数 n , k。
第2行,9个非负整数 c1, c2, …  , c9,分别表示 1~9 的个数。

输出

输出所有可能的值中,比k大的值的最小值。
如果没有比k大的值,输出-1。

样例输入 Copy

3 213
1 1 1 0 0 0 0 0 0

样例输出 Copy

231

提示

由于整数可能很大,c++可以使用字符串来接受输入整数 k