Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const int INF = 1e9;
- int dp[111][111];
- int a[100];
- void zapolnenie(int N){
- for (int i = 0; i < N - 1; ++i){
- dp[i][i + 1] = 0;
- dp[i][i] = 0;
- }
- for (int len = 3; len <= N; ++len){
- for (int l = 0; l + len <= N; ++l){
- int r = len + l - 1;
- dp[l][r] = INF;
- for (int t = l + 1; t < r; ++t){
- dp[l][r] = min(dp[l][r], dp[l][t] + dp[t][r] + a[t] * (a[l] + a[r]));
- }
- }
- }
- }
- int main() {
- int N;
- cin >> N;
- for (int i = 0; i < N; ++i){
- cin >> a[i];
- }
- zapolnenie(N);
- cout << dp[0][N - 1];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement