Cod sursa(job #1913361)
| Utilizator | Data | 8 martie 2017 12:41:15 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.65 kb |
#include <fstream>
#define INF 1000000000
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
unsigned long long mat[502][502],d[502];
int main()
{
int n,i,dist,k;
fin>>n;
for(i=0;i<=n;i++)
fin>>d[i];
for(i=1;i<=n;i++)
mat[i][i+1]=d[i-1]*d[i]*d[i+1];
for(dist=2;dist<n;dist++)
{
for(i=1;i<=n && i+dist<=n;i++)
{
mat[i][i+dist]=INF;
for(k=i;k<i+dist;k++)
{
mat[i][i+dist]=min(mat[i][i+dist],mat[i][k]+mat[k+1][i+dist]+ d[i-1]*d[k]*d[i+dist]);
}
}
}
fout<<mat[1][n];
return 0;
}
