调一天了qwq
只对了#1
#include <bits/stdc++.h>
#define int long long
#define N 201
using namespace std;
int n, m, Maxf[N][N][10], Minf[N][N][10], Max = -INT_MAX, Min = INT_MAX;
int mod(int n)
{
return ((n % 10) + 10) % 10;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
memset(Maxf, 0xcf, sizeof Maxf);
memset(Minf, 0x3f, sizeof Minf);
cin >> n >> m;
for (int i = 1; i <= n; ++i)
cin >> Maxf[i][i][1], Maxf[i + n][i + n][1] = Maxf[i][i][1],
Minf[i][i][1] = Maxf[i][i][1], Minf[i + n][i + n][1] = Minf[i][i][1];
for (int len = 2; len <= n; ++len)
for (int l = 1; l + len - 1 <= 2 * n; ++l)
{
int r = l + len - 1;
Maxf[l][r][1] = Maxf[l][r - 1][1] + Maxf[r][r][1];
Minf[l][r][1] = Minf[l][r - 1][1] + Minf[r][r][1];
for (int k = 2; k <= m; ++k)
for (int u = l; u < r; ++u)
Maxf[l][r][k] = max(Maxf[l][r][k], mod(Maxf[l][u][1]) * mod(Maxf[u + 1][r][k - 1])),
Minf[l][r][k] = min(Minf[l][r][k], mod(Minf[l][u][1]) * mod(Minf[u + 1][r][k - 1]));
}
for (int i = 1; i <= n; ++i)
Max = max(Max, Maxf[i][i + n - 1][m]),
Min = min(Min, Minf[i][i + n - 1][m]);
cout << Min << '\n'
<< Max << '\n';
return 0;
}