Pagini recente » Cod sursa (job #2376331) | Cod sursa (job #2940464) | Cod sursa (job #1693433) | Cod sursa (job #1778079) | Cod sursa (job #2050417)
#include <fstream>
#define nmax 505
#define inf 200000000000000000
using namespace std;
fstream f1("podm.in", ios::in);
fstream f2("podm.out", ios::out);
int n, d[nmax];
long long int pd[nmax][nmax];
///dim matricei a[i]- d[i-1][i]
///pd[i][j]= nrmin de inmultiri pentru a calc inmultirea matricilor a[i], a[i+1],.., a[j]
int main()
{
int i, k, x;
f1>>n;
for(i=1; i<=n+1; i++)
f1>>d[i];
///caz part k=1;
for(i=1; i<n; i++)
pd[i][i+1]=(long long int)d[i]*d[i+1]*d[i+2];
for(k=2; k<=n; k++)
{
for(i=1; i<=n-k; i++)
{
pd[i][i+k]= inf;
for(x=0; x<k; x++)
if(pd[i][i+k]> (pd[i][i+x]+ pd[i+x+1][i+k]+(long long int) d[i]* d[i+x+1]* d[i+k+1])) pd[i][i+k]=pd[i][i+x]+ pd[i+x+1][i+k]+ (long long int)d[i]* d[i+x+1]* d[i+k+1];
}
}
f2<<pd[1][n];
return 0;
}