class Solution {
public:
/**
* 得到牛牛能够凑到的最大的数字
* @param n int整型 牛牛能够承受的价格
* @param a int整型vector 1-9这九个数字的价格数组
* @return string字符串
/
string solve(int n, vector<int>& a) {
// write code here
char i,j,k;
int c,d,e=0;
string s,s1;
vector<int> b(a);
sort(b.begin(),b.end());
if(n<b[0]) return "-1";
c=n/a[8];
d=8;
for(i=7;i>=0;i--)
{
if(a[i]>n) continue;
if((n%a[i])>=b[0]&&(n%a[i])<b[0]</int></int>
2&&n/b[0]==n/a[i]+1)
{
for(j=1;b[j]<=a[i];j++)
{
if(n%a[i]<b[j]||n%a[i]>=b[j]2)
{
j--;
for(k=8;k>=0;k--)
{
if(a[k]==b[j]) break;
}
if(k<i)
{
c=n/a[i]+1;
e=c;
d=i;
}
break;
}
}
}
if(n/a[i]>c)
{
c=n/a[i];
d=i;
}
}
if(e==c)
{
s.assign(c-1, '1'+d);
s1='1'+k;
s+=s1;
}
else
{
for(j=8;j>d;j--)
{
for(k=c;k>0;k--)
{
if(n%a[d]+k
a[d]>=k*a[j])
{
s.assign(k, '1'+j);
s1.assign(c-k, '1'+d);
s+=s1;
break;
}
}
if(k>0) break;
}
}
if(j==d||d==8) s.assign(c, '1'+d);
return s;
}
};