Pagini recente » Cod sursa (job #2897504) | Cod sursa (job #1521169) | Cod sursa (job #2549015) | Cod sursa (job #1114419) | Cod sursa (job #2167038)
#include <fstream>
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");
#pragma pack(1)
#define MAXIM 510
typedef unsigned long long ll;
ll dp[MAXIM][MAXIM];
struct matrice
{
ll lin, col;
}v[MAXIM];
int main()
{
ll n, i, j;
in >> n >> v[0].lin;
for (i = 1; i <= n; i++)
{
in >> v[i].lin;
v[i - 1].col = v[i].lin;
}
for (i = 0; i<n-1; i++)
{
dp[i][1 + i] = v[i].lin*v[i].col*v[i + 1].col;
}
for (j = 2; j<n; j++)
{
for (i = 0; i<n - j; i++)
{
int l, c;
l = i; c = j + i;
dp[l][c] = ~0;
for (int k = l; k <= c; k++) if (dp[l][k] + dp[k + 1][c] + v[l].lin*v[k].col* v[c].col < dp[l][c])dp[l][c] = dp[l][k] + dp[k + 1][c] + v[l].lin*v[k].col*v[c].col;
}
}
out << dp[0][n - 1];
return 0;
}