Subtask #1 全部AC
Subtask #0 全部WA
#include<bits/stdc++.h>
using namespace std;
char a[50];
int n,m;
string f[50][50]={"0"},r[50][10]={"0"};
string mcl(string a, string b){
string t;
if(a[0]=='0'||b[0]=='0')return "0";
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
int c[100]={0},k=a.size()+b.size()+1;
for(int i=0; i<a.size(); i++){
for(int j=0; j<b.size(); j++){
c[i+j]+=(a[i]-'0')*(b[j]-'0');
c[i+j+1]+=c[i+j]/10;
c[i+j]%=10;
}
}
while(c[k]==0&&k>=0)k--;
while(k>=0)t.push_back(c[k--]+'0');
return t;
}
string maxx(string a,string b){
if(a.size()>b.size())return a;
if(a>b)return a;
return b;
}
int main(){
scanf("%d%d", &n, &m);
scanf("%s", a+1);
for(int i=1; i<=n; i++){
f[i][i]=a[i];
for(int j=i+1; j<=n; j++){
if(f[i][j-1]=="0")f[i][j]=a[j];
else f[i][j]=f[i][j-1]+a[j];
}
r[i][0]=f[1][i];
}
for(int i=1; i<=n; i++){
for(int j=1; j<=m; j++){
for(int k=j; k<i; k++){
string l=mcl(r[k][j-1],f[k+1][i]);
r[i][j]=maxx(r[i][j],l);
}
}
}
cout<<r[n][m];
return 0;
}