Pagini recente » Cod sursa (job #2278078) | Cod sursa (job #2896809) | Cod sursa (job #828543) | Cod sursa (job #2125549) | Cod sursa (job #2166925)
#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;i++) dp[i][i]=1;
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;
}
}
//for (i = 0; i < n; i++)
//{
// for (j = 0; j < n; j++) out << dp[i][j] << ' ';
// out << '\n';
//}
out << dp[0][n - 1];
return 0;
}