Pagini recente » Cod sursa (job #1122959) | Cod sursa (job #1699015) | Cod sursa (job #1083109) | Cod sursa (job #126313) | Cod sursa (job #1106208)
// Include
#include <fstream>
using namespace std;
// Constante
const int sz = 501;
const int oo = (1<<30)-1;
// Functii
int sum(int left, int right);
// Variabile
ifstream in("podm.in");
ofstream out("podm.out");
int num;
int sizes[sz];
int memoize[sz][sz];
// Main
int main()
{
in >> num;
for(int i=0 ; i<=num ; ++i)
in >> sizes[i];
out << sum(1, num);
in.close();
out.close();
return 0;
}
int sum(int left, int right)
{
if(left == right)
return 0;
if(memoize[left][right])
return memoize[left][right];
if(right - left == 1)
return memoize[left][right] = sizes[left-1] * sizes[left] * sizes[right];
int minVal = oo;
for(int mid=left ; mid<right ; ++mid)
minVal = min(minVal, sizes[left-1] * sizes[mid] * sizes[right] + sum(left, mid) + sum(mid+1, right));
return memoize[left][right] = minVal;
}