codeforces #202(div2) B
题意:数字1-9粉刷一个分别需要ai能量,总共有n个能量,输出能组成的最大数
分析:首先应该选取使用能量最少的情况下,最大的数字,然后可能还会剩余能量,那么可以贪心的把前面的数字加上这些能量换为更大的数字
#include<bits/stdc++.h> using namespace std; int a[15]; int main(){ int n; int id,cnt=INT_MAX; cin>>n; for(int i=1;i<=9;i++){ cin>>a[i]; if(a[i]<=cnt){ id=i; cnt=a[i]; } } int res=n/cnt; if(res==0)puts("-1"); else{ n%=cnt; for(int i=0;i<res;i++){ if(n==0)cout<<id; else{ int t=id; for(int j=id+1;j<=9;j++) if(a[j]<=cnt+n)t=j; cout<<t; n-=a[t]-cnt; } } cout<<endl; } return 0; }