Pagini recente » Cod sursa (job #1378424) | Cod sursa (job #438739) | Cod sursa (job #737614) | Rating Popa Dimitri (dimitree) | Cod sursa (job #1566546)
#include <fstream>
#define infinit 1000000000000LL
#define nmax 509
using namespace std;
long long int t[nmax], d[nmax][nmax];
int n;
void Citire()
{
int i;
ifstream fin("podm.in");
fin >> n;
for (i = 0; i <= n; ++i)
fin >> t[i];
fin.close();
}
void Rezolva()
{
int i, j, dif, k;
long long int minim;
for (i = 1; i < n; ++i)
d[i][i + 1] = t[i - 1] * t[i] * t[i + 1]; /// initializari
for (dif = 2; dif < n; dif++)
for (i = 1; i <= n - dif; ++i)
{
j = i + dif;
minim = infinit;
for (k = i; k < j; ++k)
minim = min(minim, d[i][k] + d[k+1][j] + t[i - 1]*t[k]*t[j]);
d[i][j] = minim;
}
}
void Afisare()
{
ofstream fout("podm.out");
fout << d[1][n] << "\n";
fout.close();
}
int main()
{
Citire();
Rezolva();
Afisare();
return 0;
}