Pagini recente » Cod sursa (job #454094) | Cod sursa (job #232267) | Cod sursa (job #764791) | Cod sursa (job #232196) | Cod sursa (job #2297260)
#include <fstream>
using namespace std;
ifstream fi("podm.in");
ofstream fo("podm.out");
const int NMAX=505,INF=1e9;
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;
}