Cod sursa(job #574685)
| Utilizator | Data | 7 aprilie 2011 14:04:12 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.47 kb |
using namespace std;
#include<fstream>
long long min(long long x,long long y)
{if(x>y) return y;return x;}
short d[550];
long long m[510][510];
int main()
{int i,j,k,n;
ifstream in("podm.in");
in>>n;
for(i=1;i<=n+1;i++)
in>>d[i];
for(i=1;i<n;i++)
for(j=1;j<=n-i;j++)
{m[j][j+i]=1LL<<62;
for(k=j;k<j+i;k++)
m[j][j+i]=min(m[j][j+i],m[j][k]+m[k+1][j+i]+1LL*d[j]*d[k+1]*d[i+j+1]);
}
ofstream out("podm.out");
out<<m[1][n]<<'\n';
out.close();
return 0;
}
