Cod sursa(job #1390827)

Utilizator AdrianGotcaAdrian Gotca AdrianGotca Data 17 martie 2015 13:06:43
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>

using namespace std;

FILE *f=fopen("podm.in","r");
FILE *g=fopen("podm.out","w");

long long n,a[501],v[501][501];
void read();
void solve();
void write();
int main()
{
    read();
    solve();
    write();
    return 0;
}

void read()
{
    fscanf(f,"%d",&n);
    for (int i=1;i<=n+1;i++)
        fscanf(f,"%d",&a[i]);
}

void solve()
{
    long long i=0,d=0,j=0,k=0,minim=0;
    for (i=1;i<n;i++)
        v[i][i+1]=a[i]*a[i+1]*a[i+2];
    for (d=2;d<=n;d++)
        for (i=1,j=d;j<=n;i++,j++)
        {
            minim=v[i][i]+v[i+1][j]+a[i]*a[i+1]*a[j+1];
            for (k=i;k<j;++k)
                if (minim>v[i][k]+v[k+1][j]+a[i]*a[k+1]*a[j+1])
                    minim=v[i][k]+v[k+1][j]+a[i]*a[k+1]*a[j+1];
            v[i][j]=minim;
        }
}

void write()
{
    fprintf(g,"%d",v[1][n]);
}