28 lines
552 B
C++
28 lines
552 B
C++
#include<cstdio>
|
|
#include<cstring>
|
|
#include<cstdlib>
|
|
#define max(a,b) ((a)>(b)?(a):(b))
|
|
int f[41][7],a[41][41];
|
|
int n,r;
|
|
char s1[255],s2[255];
|
|
int main(void)
|
|
{
|
|
scanf("%d%d ",&n,&r);
|
|
gets(s1);
|
|
for (int i=0;i<n;i++)
|
|
for (int j=i;j<n;j++)
|
|
{
|
|
strncpy(s2,s1+i,j-i+1);
|
|
s2[j-i+1]='\0';
|
|
a[i+1][j+1]=atoi(s2);
|
|
}
|
|
for (int i=1;i<=n;i++)
|
|
f[i][0]=a[1][i];
|
|
for (int k=1;k<=r;k++)
|
|
for (int i=k+1;i<=n;i++)
|
|
for (int j=k;j<=i;j++)
|
|
f[i][k]=max(f[i][k],f[j][k-1]*a[j+1][i]);
|
|
printf("%d\n",f[n][r]);
|
|
return 0;
|
|
}
|
|
|