Cod sursa(job #2195148)
| Utilizator | Data | 15 aprilie 2018 14:31:35 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.66 kb |
#include <iostream>
using namespace std;
ifstream cin("podm.in");
ofstream cout("podm.out");
const int MAX = 501;
const long long INF = (1 << 18);
int v[MAX], n;
long long dp[MAX][MAX];
int main()
{
cin >> n;
for(int i = 0; i <= n; ++i)
{
cin >> v[i];
}
for(int d = 2; d <= n; ++d)
{
for(int i = 1, j = d; j <= n; ++i, ++j)
{
dp[i][j] = INF;
for(int k = i + 1; k <= j; ++k)
{
dp[i][j] = min(dp[i][j], dp[i][k - 1] + dp[k][j] + 1ll * v[i - 1] * v[k - 1] * v[j]);
}
}
}
cout << dp[1][n];
return 0;
}
