Pagini recente » Istoria paginii runda/testere21/clasament | Cod sursa (job #1695764) | Cod sursa (job #1044080) | Cod sursa (job #2149249) | Cod sursa (job #1790856)
#include<cstdio>
#define NMAX 502
using namespace std;
long long unsigned M[NMAX][NMAX];
unsigned d[NMAX], n;
void Read()
{
FILE *fin = fopen("podm.in","r");
fscanf(fin,"%d",&n);
for(unsigned i=0; i<n+1; i++)
fscanf(fin,"%d",&d[i]);
fclose(fin);
}
void Rezolvare()
{
long long unsigned Infinit = 1000000000000000000, minim;
unsigned nr, i, j, k;
for(nr=2; nr<=n; nr++)
for(i=1; i<=n-nr+1; i++)
{
j = i+nr-1;
for(k=i, minim = Infinit; k<j; k++)
if(minim > M[i][k] + M[k+1][j] + d[i-1]*d[k]*d[j])
minim = M[i][k] + M[k+1][j] + d[i-1]*d[k]*d[j];
M[i][j] = minim;
}
}
int main()
{
Read();
Rezolvare();
FILE *fout = fopen("podm.out","w");
fprintf(fout,"%llu\n",M[1][n]);
fclose(fout);
return 0;
}