Cod sursa(job #1093666)

Utilizator cernat.catallinFMI Cernat Catalin Stefan cernat.catallin Data 28 ianuarie 2014 14:37:15
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <stdio.h>
using namespace std;

#define Nmax 505

int n;
int mat_dim[Nmax];
long long int mat_cost[Nmax][Nmax];
long long int cost;
const long long int inf = 50000000000000000;

void read()
{
    freopen("podm.in", "r", stdin);
    scanf("%d", &n);
    for (int i = 1; i <= n + 1; ++i)
        scanf("%lld", &mat_dim[i]);
    fclose(stdin);
}

void solve()
{
    for (int l = 2; l <= n; ++l)
        for (int i = 1, j; i <= n - l + 1; ++i){
            j = i + l - 1;
            mat_cost[i][j] = inf;
            for (int k = i; k < j; ++k){
                cost = mat_cost[i][k] + mat_cost[k+1][j] + mat_dim[i]*mat_dim[k+1]*mat_dim[j+1];
                if (mat_cost[i][j] > cost)
                    mat_cost[i][j] = cost;
            }
        }
}

int main()
{
    read();
    solve();
    freopen("podm.out", "w", stdout);
    printf("%lld\n", mat_cost[1][n]);
    fclose(stdout);

    return 0;
}