Pagini recente » Cod sursa (job #454736) | Cod sursa (job #1992344) | Cod sursa (job #693806) | Cod sursa (job #1322576) | Cod sursa (job #2297261)
#include <fstream>
using namespace std;
ifstream fi("podm.in");
ofstream fo("podm.out");
const long long NMAX=505,INF=(1LL<<60);
long long n,dp[NMAX][NMAX],x,y;
pair <long long,long long> M[NMAX];
int main()
{
fi>>n;
fi>>y;
for(int i=2;i<=n+1;i++)
{
fi>>x;
M[i-1]={y,x};
y=x;
}
M[n+1].first=M[n].second;
for(int i=1;i<=n;i++)
dp[i][i+1]=0;
for(int l=2;l<=n;l++)
for(int i=1;i<=n-l+1;i++)
{
int j=i+l;
dp[i][j]=INF;
for(int mid=i+1;mid<j;mid++)
dp[i][j]=min(dp[i][j],dp[i][mid]+dp[mid][j]+M[i].first*M[mid].first*M[j].first);
}
fo<<dp[1][n+1]<<"\n";
return 0;
}