Cod sursa(job #2131394)

Utilizator maria_sinteaMaria Sintea maria_sintea Data 14 februarie 2018 18:05:53
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include <cstdio>
#define N 505
#define inf 1LL<<62
#define min(a, b) a<b?a:b

using namespace std;

int n;
long long a[N], d[N][N];

void citire()
{
    scanf("%d\n", &n);
    for(int i=0;i<=n;i++)
        scanf("%d ", &a[i]);
}

void calcul()
{
    for(int i=1;i<n;i++)
        d[i][i+1]=a[i-1]*a[i]*a[i+1];

    for(int dim=1;dim<n;dim++)
        for(int i=1;i<=n-dim;i++)
        {
            d[i][i+dim]=inf;
            for(int k=i;k<i+dim;k++)
                d[i][i+dim]=min(d[i][i+dim], d[i][k]+d[k+1][i+dim]+a[i-1]*a[k]*a[i+dim]);
        }
}

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

    citire();
    calcul();
    printf("%lld", d[1][n]);
    return 0;
}