Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- int main() {
- int n;
- cin >> n;
- vector <int> a(n);
- for (int i = 0; i < n; i++) cin >> a[i];
- vector <vector<int>> dp(n, vector<int>(n, 0));
- for (int len = 2; len <= n; len++) {
- for (int left = 0; left + len - 1 < n; left++) {
- int right = left + len - 1;
- if (len == 2)
- dp[left][right] = 0;
- else {
- dp[left][right] = 1000 * 1000 * 1000;
- for (int mid = left + 1; mid <= right - 1; mid++)
- dp[left][right] = min(dp[left][right], (a[left] + a[right]) * a[mid] + dp[left][mid] + dp[mid][right]);
- }
- }
- }
- cout << dp[0][n - 1];
- return 0;
- }
Advertisement
RAW Paste Data
Copied
Advertisement