Cod sursa(job #2413566)
| Utilizator | Data | 23 aprilie 2019 15:34:35 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.57 kb |
#include <fstream>
using namespace std;
ifstream in ("podm.in");
ofstream out ("podm.out");
const long long INF=(1ll<<63)-1;
int n;
int v[507];
long long dp[507][507];
int main()
{
in>>n;
for (register int i=0; i<=n; ++i)
in>>v[i];
for (register int k=2; k<=n; ++k)
for (register int i=1, j=k; j<=n; ++i, ++j)
{
dp[i][j]=INF;
for (register int q=i; q<j; ++q)
dp[i][j]=min (dp[i][q]+dp[q+1][j]+1ll*v[i-1]*v[q]*v[j], dp[i][j]);
}
out<<dp[1][n];
return 0;
}
