Pagini recente » Cod sursa (job #1360916) | Cod sursa (job #1243595) | Cod sursa (job #1243603) | Cod sursa (job #2239435) | Cod sursa (job #2148508)
#include <iostream>
#include <fstream>
#define NMAX 550
using namespace std;
ifstream fin ("podm.in");
ofstream fout ("podm.out");
unsigned long long int cmin[NMAX][NMAX], d[NMAX];
int n;
void citire();
void rezolvare();
void afis();
int main()
{
citire();
rezolvare();
afis();
return 0;
}
void afis()
{
int i, j;
fout<<cmin[1][n]<<'\n';
/*
*/
}
void rezolvare()
{
int i, j, q;
unsigned long long int minim=0;
int poz;
for (i=1; i<n; i++)
cmin[i][i+1]=d[i-1]*d[i]*d[i+1];
for (i=2; i<n; i++)
for (j=1; j<=n-i; j++)
{
minim=cmin[j][j]+cmin[j+1][j+i]+d[j-1]*d[j]*d[j+1];
for (q=j; q<j+i; q++)
if (cmin[j][q]+cmin[q+1][j+i]+d[j-1]*d[q]*d[j+i]<minim)
{
minim=cmin[j][q]+cmin[q+1][j+i]+d[j-1]*d[q]*d[j+i];
poz=q;
}
cmin[j][j+i]=minim;
cmin[j+i][j]=poz;
}
}
void citire()
{
int i;
fin>>n;
for (i=0; i<=n; i++)
fin>>d[i];
}