Cod sursa(job #795412)

Utilizator Viva12Ferentz Sergiu Viva12 Data 8 octombrie 2012 18:26:49
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <cstdio>

using namespace std;
long long n;
long long d[10005];
long long mat[551][551];
void citire()
{
    scanf("%d",&n);
        for(long long i = 0; i<n+1;i++)
        {
            scanf("%lld",&d[i]);
        }
}


void inmultire()
{
    for(long long i = 1 ; i < n;i++)
    {
        for(long long j = 1; j <= n-i; j++)
        {
            long long optimGlob;
            long long min = mat[j][j] + mat[j+1][i+j] + d[j-1] * d[j] *d[j+i];
            for(long long k = j; k < j+i;k++)
            {
                long long z =mat[j][k]+mat[k+1][i+j]+d[j-1]*d[k]*d[j+i];
                if(min > z)
                {
                    min = z;
                    optimGlob = k;
                }

            }
            mat[j][j+i] = min;
            mat[j+i][j] = optimGlob;
        }
    }
}

int main()
{
    freopen("podm.in","r",stdin);
    freopen("podm.out","w",stdout);

    citire();
    inmultire();
    printf("%lld",mat[1][n]);

    return 0;
}