Pagini recente » Cod sursa (job #2843357) | Cod sursa (job #2298710) | Cod sursa (job #1804591) | Cod sursa (job #2506385) | Cod sursa (job #1424229)
//parantezare optima de matrici
#include <iostream>
#include <fstream>
#include <vector>
#define dim 505
#define INF 0x3F3F3F3F
using namespace std;
ofstream out("podm.out");
int n;
typedef long long I64;
I64 v[dim] , bst[dim][dim];
int main()
{
ifstream in("podm.in");
in >> n;
for(int i = 0 ; i <=n ; i++)
in >> v[i];
for( int i = 0 ; i < n - 1 ; i++)
bst[i][i+2] = v[i] * v[i+1] * v[i+2];
for(int d=3; d<=n; ++d)
{
for(int i=0; i+d<=n; ++i)
{
int j=i+d;
I64 best=(1LL << 60);
for(int k=i+1; k<j; ++k)
{
best=min(best,bst[i][k]+bst[k][j]+v[i]*v[k]*v[j]);
}
bst[i][j]=best;
}
}
out << bst[0][n];
return 0;
}