Cod sursa(job #698089)

Utilizator andrei.finaruFinaru Andrei Emanuel andrei.finaru Data 29 februarie 2012 12:21:58
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>

using namespace std;

ifstream f("podm.in");
ofstream g("podm.out");

int n,d[512],a[512][512];

inline int minim(int a, int b)
{
    return (a>b)?b:a;
}

int main()
{
    int i,j,k;
    f>>n;
    for(i=0;i<=n;++i) f>>d[i];
    for(i=1;i<n;++i) a[i][i+1]=d[i-1]*d[i]*d[i+1];
    for(k=2;k<n;++k)
        for(i=1;i+k<=n;++i)
        {
            a[i][i+k]=a[i][i]+a[i+1][i+k]+d[i-1]*d[i]*d[i+k];
            for(j=2;j<i+k;++j) a[i][i+k]=minim(a[i][i+k],a[i][i+j-1]+a[i+j][i+k]+d[i-1]*d[i+j-1]*d[i+k]);
        }
    g<<a[1][n]<<'\n';
    f.close(); g.close();
    return 0;
}