Cod sursa(job #1500348)

Utilizator drobertDumitru Robert drobert Data 11 octombrie 2015 19:45:02
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <limits>
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");

#define NMAX 505
#define Min(a, b) ((a) < (b) ? (a) : (b))

long long d[NMAX], n;
long long best[NMAX][NMAX], inf;

int main()
{
    long long i, j, k, t;
    in>>n;
    inf = numeric_limits<long long>::max();
    for (i = 0;i <= n;i++)
        in>>d[i];
    for (i = 1;i <= n;i++)
        best[i][i] = 0;
    for (i = 1;i < n; i++)
        best[i][i + 1] = d[i - 1] * d[i] * d[i + 1];
    for (t = 2;t < n;t++)
        for (i = 1;i <= n - t;i++)
        {
            j = i + t;
            best[i][j] = inf;
            for (k = i;k < i + t;k++)
                best[i][j] = Min(best[i][j], best[i][k] + best[k + 1][j] + d[i - 1] * d[k] * d[j]);
        }
    out<<best[1][n];
}