最大值没错,最小值有问题qwq
#include <bits/stdc++.h>
using namespace std;
const int N = 105, inf = 2e9;
int n, m, a[N];
int f[N][N][10], g[N][N][10];
inline int mod(int x) { return (x % 10 + 10) % 10; }
int main()
{
cin >> n >> m;
for (int i = 1; i <= n; i++)
cin >> a[i], a[i + n] = a[i];
for (int i = 1; i <= n * 2; i++)
a[i] += a[i - 1];
for (int i = 1; i <= n * 2; i++)
for (int j = i; j <= n * 2; j++)
f[i][j][1] = g[i][j][1] = mod(a[j] - a[i - 1]);
for (int st = 1; st <= n * 2; st++)
{
for (int i = 1; i <= n * 2; i++)
{
for (int j = 2; j <= m; j++)
{
f[st][i][j] = inf;
for (int k = j - 1; k < i; k++)
{
f[st][i][j] = min(f[st][i][j], f[st][k][j - 1] * mod(a[i] - a[k]));
g[st][i][j] = max(g[st][i][j], g[st][k][j - 1] * mod(a[i] - a[k]));
}
}
}
}
int minv = inf, maxv = -inf;
for (int i = 1; i <= n; i++)
{
minv = min(minv, f[i][i + n - 1][m]);
maxv = max(maxv, g[i][i + n - 1][m]);
}
cout << minv << endl
<< maxv << endl;
return 0;
}