Cod sursa(job #1791360)

Utilizator gabor.vlad13lil pump gabor.vlad13 Data 29 octombrie 2016 11:54:00
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <cstdio>
#include <cstring>
#include <climits>
#define DMAX 10005
using namespace std;

long long n;
long long d[DMAX];
long long mat[505][505];

void init()
{
    for (int i=0; i<=n; i++)
        for(int j=0; j<=n; j++)
                mat[i][j]= LLONG_MAX;
    for (int i=0; i<=n; i++)
        mat[i][i] = 0;
}

void solve()
{
    int ind;
    for(int j=2; j<=n; j++)
    {
        for(int i=1; i<=n-j+1; i++)
        {
            int ind = j+i-1;
            for(int k=i; k<ind; k++)
                mat[i][ind]=min(mat[i][ind],mat[i][k]+mat[k+1][ind]+d[i-1]*d[ind]*d[k]);
        }
    }

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

}

int main()
{
    freopen("podm.in", "r", stdin);
    freopen("podm.out", "w", stdout);
    scanf("%lld\n", &n);
    init();
    for (int i=0; i<=n; i++)
        scanf("%lld ", &d[i]), mat[i][i] = 0;
    solve();
    return 0;
}