Cod sursa(job #791101)

Utilizator repp4raduRadu-Andrei Szasz repp4radu Data 22 septembrie 2012 21:56:54
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>

#define INF (1LL << 62)
#define MAX 512

using namespace std;

long long dp[MAX][MAX], d[MAX];
int n;

int main()
{
    ifstream in("podm.in");
    in>>n;
    for(int i = 0; i <= n; i++) in>>d[i];
    in.close();
    for(int i = 1; i <= n; i++)
    {
        dp[i][i] = 0;
        dp[i][i + 1] = d[i - 1] * d[i] * d[i + 1];
    }
    for(int i = 2; i < n; i++)
        for(int j = 1; j <= n - i; j++)
        {
            int h = j + i;
            dp[j][h] = INF;
            for(int k = j; k < h; k++)
                dp[j][h] = min(dp[j][h], dp[j][k] + dp[k + 1][h] + d[j - 1] * d[k] * d[h]);
        }
    ofstream out("podm.out");
    out<<dp[1][n]; out.close();
    return 0;
}