Igor has fallen in love with Tanya. Now Igor wants to show his feelings and write a number on the fence opposite to Tanya's house. Igor thinks that the larger the number is, the more chance to win Tanya's heart he has.
Unfortunately, Igor could only get v liters of paint. He did the math and concluded that digit d requires ad liters of paint. Besides, Igor heard that Tanya doesn't like zeroes. That's why Igor won't use them in his number.
Help Igor find the maximum number he can write on the fence.
The first line contains a positive integer v (0 ≤ v ≤ 106). The second line contains nine positive integers a1, a2, ..., a9 (1 ≤ ai ≤ 105).
Print the maximum number Igor can write on the fence. If he has too little paint for any digit (so, he cannot write anything), print -1.
5 5 4 3 2 1 2 3 4 5
55555
2 9 11 1 12 5 8 9 10 6
33
0 1 1 1 1 1 1 1 1 1
-1
#include<cstdio>
#include<cstring>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
typedef pair<int,int> P;
int v;
vector<P> Num;
int main()
{
scanf("%d",&v);
int MIN = 1e9;
for(int i = 1; i <= 9; i++){
int x;
scanf("%d",&x);
Num.push_back(P(i,x));
MIN = min(MIN,x);
}
string s;
int ans = -1;
while(v >= MIN){
int len = v/MIN;
for(int i = 8; i >= 0; i--){
if(v >= Num[i].second && (v-Num[i].second)/MIN+1 == len){
s.push_back(Num[i].first+48);
v -= Num[i].second;
break;
}
}
}
if(!s.empty()){
cout << s << endl;
}
else cout << "-1" << endl;
}
本文介绍了一道编程题的解决思路,问题是如何利用有限的油漆量在篱笆上写出最大的数字,以此来吸引Tanya的注意。文章详细阐述了算法步骤,并提供了完整的代码实现。
573

被折叠的 条评论
为什么被折叠?



