Cod sursa(job #2041407)

Utilizator WebDesignbyTMGhiorghiu Ioan-Viorel WebDesignbyTM Data 17 octombrie 2017 10:57:34
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#define DM 505
#define inf 10000000000000000
#include <climits>
#include <fstream>
using namespace std;

ifstream fi ("podm.in");
ofstream fo ("podm.out");
int n;
long long dp[DM][DM], v[DM];

long long min (long long a, long long b){
    return (a < b ? a:b);
}

int main()
{
    fi >> n;
    for (int i = 0; i <= n; ++i)
        fi >> v[i];
    for (int i = 1; i <= n; ++i)
        dp[i][i] = 0;
    for (int i = 1; i < n; ++i)
        dp[i][i+1] = v[i-1]*v[i]*v[i+1];
    for (int i = 2; i < n; ++i)
        for (int j = 1; j <= n - i; ++j)
        {
            dp[j][j+i] = LONG_MAX;
            for (int k = j; k < j + i; ++k)
                dp[j][j+i] = min(dp[j][i+j], (long long) dp[j][k] + (long long) dp[k+1][j+i] + (long long) v[j-1]*v[k]*v[j+i]);
        }
    fo << dp[1][n];
    return 0;
}