#include <bits/stdc++.h>
using namespace std;
const int N = 105;
#define int long long
int a[N],f1[N][N][15],f2[N][N][15],n,m;//f1存最小,f2存最大
long long b[N];
int mod(int x){
return (x % 10 + 10) % 10;
}
signed main(){
cin >> n >> m;
for(int i = 1;i <= n;i++){
cin >> a[i];
a[i + n] = a[i];
}
for(int i = 1;i <= 2 * n;i++){
b[i] = a[i] + b[i - 1];
}
memset(f1,0x3f,sizeof f1);
for(int i = 1;i <= 2 * n;i++){
for(int j = 1;j <= 2 * n;j++){
f1[i][j][1] = f2[i][j][1] = mod(b[j] - b[i - 1]);
}
}
for(int l = 2;l <= m;l++){
for(int i = 1;i <= n;i++){
for(int j = i + 1;j < 2 * n;j++){
for(int k = i + 1;k < j;k++){
f1[i][j][l] = min(f1[i][j][l],f1[i][k][l - 1] * mod(b[j] - b[k]));
f2[i][j][l] = max(f2[i][j][l],f2[i][k][l - 1] * mod(b[j] - b[k]));
}
}
}
}
int minn = 0x3f,maxn = -0x3f;
for(int i = 1;i <= n;i++){
minn = min(minn,f1[i][i + n - 1][m]);
maxn = max(maxn,f2[i][i + n - 1][m]);
}
cout << minn << '\n' << maxn;
return 0;
}
样例过了,下了第二个数据点,最小值输出成了-0x3f