Pagini recente » Diferente pentru olimpici intre reviziile 22 si 180 | Istoria paginii utilizator/florin_george | Istoria paginii utilizator/babet_amy | Diferente pentru olimpici intre reviziile 177 si 178 | Cod sursa (job #3155891)
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
long long d[501],j,k,l;
long long n,i;
long long dp[501][501];
int main()
{
fin>>n;
for(i=1; i<=n+1; i++)
{
fin>>d[i];
}
for(i=1; i<n; i++)
{
dp[i][i+1]=1ll*(d[i]*d[i+1]*d[i+2]);
}
for(l=3; l<=n; l++)
{
for(i=1; i<=n-l+1; i++)
{
long long j=i+l-1;
dp[i][j]=LLONG_MAX;
for(k=i; k<j; k++)
{
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+1ll*d[i]*d[k+1]*d[j+1]);
}
}
}
fout<<dp[1][n];
return 0;
}