蒟蒻的自我拯救。。。
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>
using namespace std;
char save[100];
int st[100];
int n,m,ans[100],getm,tmp[100],numans,lans;
void dfs(int loc,int sum,int now,int t)
{
// printf("%d %d %d %d\n",loc,sum,now,t);
// system("pause");
int tloc=loc,tsum=sum,tnow=now,tt=t;
if(loc==strlen(save))
{
if(getm<sum)
{
getm=sum;
numans=1;
for(int i=1;i<=tt;i++)
{
ans[i]=tmp[i];
}
lans=tt;
}
else if(getm==sum)
{
numans++;
}
return ;
}
if(sum+st[loc]>n)
return ;
if(sum+st[loc]<=n)
{
int q=tmp[tt+1];
tmp[tt+1]=st[tloc];
dfs(tloc+1,sum+st[tloc],st[tloc],tt+1);
tmp[tt+1]=q;
}
if(sum-now+now*10+st[loc]<=n)
{
int q=tmp[tt];
tmp[tt]=now*10+st[loc];
dfs(loc+1,sum-now+now*10+st[loc],tmp[tt],tt);
tmp[tt]=q;
}
}
int main()
{
while(scanf("%d%s",&n,save))
{
getm=-1;
numans=-1;
if(n==0&&save[0]=='0')
{
break;
}
int len=strlen(save);
for(int i=0;i<len;i++)
st[i]=save[i]-'0';
tmp[1]=st[0];
dfs(1,st[0],st[0],1);
if(numans>=2)
{
printf("rejected\n");
}
else if(getm==-1)
{
printf("error\n");
}
else if(numans==1)
{
printf("%d ",getm);
printf("%d",ans[1]);
for(int i=2;i<=lans;i++)
{
printf(" %d",ans[i]);
}
printf("\n");
}
}
return 0;
}