提交时间:2026-06-06 13:12:55
运行 ID: 90564
#include <cstdio> #define max(a, b) (((a) > (b)) ? (a) : (b)) int N; int a[210]; int dp[210][210]; int main() { scanf("%d", &N); for(int i = 1; i <= N; i++) scanf("%d", &a[i]); for(int i = 1; i <= N; i++) a[i + N] = a[i]; int ans = 0; for(int len = 2; len <= N; len++) { for(int i = 1; i <= 2 * N - len + 1; i++) { int j = i + len - 1; for(int k = i; k <= j - 1; k++) dp[i][j] = max(dp[i][j], dp[i][k] + dp[k + 1][j] + a[i] * a[j + 1] * a[k + 1]); ans = max(ans, dp[i][j]); } } printf("%d", ans); return 0; }