Pagini recente » Cod sursa (job #181292) | Rating Bosioc Aser (Aserul) | Istoria paginii runda/baraj-ichb2021 | Cod sursa (job #2382138) | Cod sursa (job #913655)
Cod sursa(job #913655)
// Include
#include <fstream>
using namespace std;
// Definitii
#define ll long long
#define current best[left][right]
// Constante
const int sz = 501;
const ll oo = (1LL<<62)-1;
// Functii
ll sum(int left, int right);
// Variabile
ifstream in("podm.in");
ofstream out("podm.out");
int num;
int sizes[sz];
ll best[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;
}
ll sum(int left, int right)
{
if(current)
return current;
if(right - left == 1)
return current = (ll)(sizes[left-1]*sizes[left])*(ll)sizes[left+1];
ll minVal = oo;
for(int mid=left ; mid<right ; ++mid)
minVal = min(minVal, sum(left, mid) + sum(mid+1, right) + (ll)(sizes[left-1]*sizes[mid])*(ll)sizes[right]);
return current = (minVal==oo? 0 : minVal);
}