Cod sursa(job #2041025)

Utilizator WebDesignbyTMGhiorghiu Ioan-Viorel WebDesignbyTM Data 16 octombrie 2017 19:42:07
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#define DM 505
#include <climits>
#include <fstream>
using namespace std;

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

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