Cod sursa(job #1095372)
| Utilizator | Data | 30 ianuarie 2014 20:02:30 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.59 kb |
#include<fstream>
using namespace std;
ifstream f("podm.in");
ofstream g("podm.out");
long long nr,mini,m[505][505],j,d,i,n,a[505];
int main()
{
f>>n;
for(i=0;i<=n;++i)
f>>a[i];
for(i=1;i<n;++i)
m[i][i+1]=a[i-1]*a[i]*a[i+1];
for(d=2;d<n;++d)
for(i=1;i<=n-d;++i)
{
mini=999999999999;
for(j=i;j<i+d;++j)
{
nr=(long long)m[i][j]+m[j+1][i+d];
nr=(long long)nr+a[i-1]*a[j]*a[i+d];
if(nr<mini)
mini=nr;
}
m[i][i+d]=mini;
}
g<<m[1][n]<<'\n';
return 0;
}
