本蒟蒻代码
#include<bits/stdc++.h>
using namespace std;
int a[10],mb,ys,n,mins=0,maxn=0;
bool ans[20],tmp[20],reject;
void solve(int x){
while(x){
a[++n]=x%10;
mins+=x%10;
x/=10;
}
reverse(a+1,a+n+1);
}
void dfs(int cur,int sum,int num){
if(cur==n){
sum+=num;
if(sum>mb) return ;
if(sum>maxn){
maxn=sum;
memcpy(ans,tmp,sizeof(tmp));
reject=false;
}
else if(sum==maxn) reject=true;
return ;
}
tmp[cur]=true;
dfs(cur+1,sum+num,a[cur+1]);
tmp[cur]=false;
dfs(cur+1,sum,num*10+a[cur+1]);
}
int main(){
while(cin>>mb>>ys&&(mb||ys)){
memset(tmp,false,sizeof(tmp));
memset(ans,false,sizeof(ans));
reject=false;
mins=n=maxn=0;
solve(ys);
if(mb==ys) printf("%d %d",mb,ys);
else if(mins>mb) printf("error");
else{
dfs(1,0,a[1]);
if(reject==true) printf("reject");
else{
printf("%d ",maxn);
for(int i=1; i<n; i++){
if(ans[i]) printf("%d ",a[i]);
else printf("%d",a[i]);
}
printf("%d",a[n]);
}
}
printf("\n");
}
return 0;
}
WA,20分