Pagini recente » Cod sursa (job #3254081) | Cod sursa (job #2748220) | Cod sursa (job #530472) | Cod sursa (job #2375471) | Cod sursa (job #1652908)
#include <iostream>
#include <fstream>
#define FLAG (1<<60)LL
#define MINIM(a, b) ((a)>(b)?(b):(a))
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");
int main()
{
int n, i, j, l, k;
in >> n;
long long m[n+1][n+1], d[n+1];
for(i = 0; i <= n; i++) in >> d[i];
for(i = 1; i <= n; i++) m[i][i] = 0;
for(i = 1; i <= n-1; i++) m[i][i+1] = d[i-1]*d[i]*d[i+1];
for(l = 2; l < n; l++)
for(i = 1; i <= n-l; i++)
{
j = i+l;
m[i][j] = FLAG;
for(k = i; k <= j-1; k++)
m[i][j] = 1LL*MINIM(m[i][j], m[i][k]+m[k+1][j]+d[i-1]*d[k]*d[j]);
}
out << m[1][n];
}