Cod sursa(job #1417642)
| Utilizator | Data | 10 aprilie 2015 18:42:25 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.62 kb |
#include <iostream>
#include <fstream>
#define LL long long
using namespace std;
LL N,a[540],dp[510][510];
int main(){
ifstream fin("podm.in");
ofstream fout("podm.out");
fin >> N;
int i,len,j,k;
for (i=1; i<=N+1; i++) fin >> a[i];
for (i=1; i<N; i++) dp[i][i+1]=a[i]*a[i+1]*a[i+2];
for (len=3; len<=N; len++)
for (i=1; i+len-1<=N; i++){
j=i+len-1;
dp[i][j]=(1LL<<60);
for (k=i; k<j; k++)
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+a[i]*a[k+1]*a[j+1]);
}
fout << dp[1][N] << "\n";
return 0;
}
