Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/nepregatim | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2014161)
#include <fstream>
#define VAL 505
#define INF 1000000000000000000
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
int N, i, j, k;
int v[VAL], l;
long long dp[VAL][VAL], mn;
int main()
{
fin >> N;
N++;
for (i=1; i<=N; i++)
fin >> v[i];
for (l=3; l<=N; l++)
{
for (i=1; i<=N-l+1; i++)
{
j=i+l-1;
mn=INF;
for (k=i+2; k<=j-3; k++)
mn=min(mn, dp[i][k]+dp[k+1][j]);
mn=min(mn, 1LL*v[i]*v[i+1]*v[j]+dp[i+1][j]);
mn=min(mn, 1LL*v[i]*v[j-1]*v[j]+dp[i][j-1]);
dp[i][j]=mn;
}
}
fout << dp[1][N] << '\n';
fin.close();
fout.close();
return 0;
}