Cod sursa(job #1526438)
| Utilizator | Data | 16 noiembrie 2015 11:48:42 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.72 kb |
#include <cstdio>
using namespace std;
int v[505];
long long mat[505][505];
int main()
{
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
int n,i,j,k;
long long x,minn;
scanf("%d",&n);
for(i=0;i<=n;i++) scanf("%d",&v[i]);
for(i=1;i<=n;i++) mat[i][i]=0;
for(j=1;j<n;j++)
{
for(i=1;i<=n;i++)
{
if((i+j)>n) break;
minn=10000000000000000ll;
for(k=i;k<i+j;k++)
{
x=mat[i][k]+mat[k+1][i+j]+v[i-1]*v[k]*v[i+j];
if(x<minn) minn=x;
}
mat[i][i+j]=minn;
}
}
printf("%lld",mat[1][n]);
return 0;
}
