using namespace std;
int f[1001],len,f1[1001];char a[81];
string calc(int l,int r)
{
	string s="";
	for(int i=l;i<=r;i++)s+=a[i];
	while(s[0]=='0'&&s.size()>1)s.erase(s.begin());
	return s;
}
bool check(string a,string b)
{
	if(a.size()<b.size())return 0;
	if(a.size()>b.size())return 1;
	for(int i=0;i<a.size();i++)
		if(a[i]<=b[i])return 0;
	return 1;
}
void print(int r)
{
	if(!f[r])return;
	print(f[r]-1);
	cout<<calc(f[r],r);
	if(r!=len)cout<<',';
}
int main()
{
	scanf("%s",a+1);
	len=strlen(a+1);
	for(int i=1;i<=len;i++)
		for(int k=1;k<=i;k++)
		{
			string x=calc(k,i);
			string y=calc(f[k-1],k-1);
			if(!check(x,y))continue;
			if(f1[i]<f1[k-1]+1)
			{
				f1[i]=f1[k-1]+1;
				f[i]=k;
			}
		}
	print(len);
}```

1 条评论

  • 1

信息

ID
20
时间
1000ms
内存
256MiB
难度
9
标签
(无)
递交数
76
已通过
7
上传者