Cod sursa(job #1109617)

Utilizator DenisacheDenis Ehorovici Denisache Data 17 februarie 2014 13:48:06
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>
using namespace std;
FILE*f=fopen("podm.in","r");
FILE*g=fopen("podm.out","w");
#define INF 1000000000000000LL
long long A[505][505],Dim[505];
int i,j,n;
long long Min(long long a,long long b)
{
    if (a<b) return a;
    else return b;
}
int main()
{
    fscanf(f,"%d",&n);
    for (i=0;i<=n;i++) fscanf(f,"%lld",&Dim[i]);
    for (i=1;i<=n;i++) A[i][i]=0;
    for (i=1;i<n;i++) A[i][i+1]=Dim[i-1]*Dim[i]*Dim[i+1];
    for (int w=2;w<n;w++)
    {
        for (i=1;i<=n-w;i++)
        {
            j=i+w;
            A[i][j]=INF;
            for (int k=i;k<j;k++)
                A[i][j]=Min(A[i][j],A[i][k]+A[k+1][j]+Dim[i-1]*Dim[k]*Dim[j]);
        }
    }
    fprintf(g,"%lld",A[1][n]);
    return 0;
}