Cod sursa(job #795408)

Utilizator Viva12Ferentz Sergiu Viva12 Data 8 octombrie 2012 18:21:30
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <cstdio>

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


void inmultire()
{
    for(int i = 1 ; i < n;i++)
    {
        for(int j = 1; j <= n-i; j++)
        {
            int optimGlob;
            long long min = mat[j][j] + mat[j+1][i+j] + d[j-1] * d[j] *d[j+i];
            for(int 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;
}