Pagini recente » Cod sursa (job #2126015) | Cod sursa (job #1423519) | Cod sursa (job #120092) | Cod sursa (job #2560619) | Cod sursa (job #2638960)
#include <bits/stdc++.h>
using namespace std;
unsigned long long **m;
int solve(vector<int> d)
{
int n=d.size()-1;
for(int i=0; i<n-1; i++)
{
m[i][i]=0;
m[i][i+1]=d[i]*d[i+1]*d[i+2];
}
m[n-1][n-1]=0;
for(int k=2; k<n; k++)
{
for(int i=0; i<=n-k-1; i++)
{
unsigned long long mn=ULLONG_MAX;
for(int j=i+1; j<=i+k; j++)
{
unsigned long long cost;
cost=m[i][j-1]+m[j][i+k]+d[i]*d[j]*d[i+k+1];///i+k+1???
mn=min(mn, cost);
}
m[i][i+k]=mn;
}
}
return m[0][n-1];
}
int main()
{
ifstream f("podm.in");
ofstream g("podm.out");
int n;
vector<int> d;
f>>n;
d.resize(n+1);
for(int i=0; i<n+1; i++)
f>>d[i];
m=(unsigned long long**)malloc(n*sizeof(unsigned long long*));
for(int i=0; i<n; i++)
m[i]=(unsigned long long*)malloc(n*sizeof(unsigned long long));
g<<solve(d);
for(int i=0; i<n; i++)
free(m[i]);
free(m);
f.close();
g.close();
return 0;
}