Pagini recente » Istoria paginii runda/simulare9_31_10 | Cod sursa (job #1306) | Arhiva de probleme | Monitorul de evaluare | Cod sursa (job #1533336)
#include <stdio.h>
int v[501];
long long m[501][501];///m[i][j]=nr optim de a inmultiri pt matricele de la i la j
int main()
{
FILE *f;
int n,i,j,k,aux;
f=fopen("podm.in","r");
fscanf(f,"%d",&n);
for (i=1; i<=n+1; i++)
fscanf(f,"%d",&v[i]);
fclose(f);
///costul de a inmulti o singura matrice este 0
for (i=1; i<n; i++)
m[i][i+1]=v[i]*v[i+1]*v[i+2];///initializez costurile pt cuplajele de cate 2
for (j=2; j<=n; j++)
{
for (i=1; i<=n-j+1; i++)
{
m[i][i+j]=1000000000000000LL;
for (k=i; k<i+j; k++)
{
aux=m[i][k]+m[k+1][j+i]+v[i]*v[k+1]*v[j+i+1];
if (aux < m[i][i+j])
m[i][i+j]=aux;
}
}
}
f=fopen("podm.out","w");
fprintf(f,"%I64d",m[1][n]);
fclose(f);
}