Cod sursa(job #1380228)

Utilizator Eugen01Vasilescu Eugen Eugen01 Data 6 martie 2015 23:58:41
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<fstream>
#include<cstring>

#define inf 0x3f3f3f3f3f3f3f3f
#define Nmax 505

using namespace std;

ifstream in("podm.in");
ofstream out("podm.out");

long long D[Nmax][Nmax];

int main()
{
    int N, V[Nmax];
    in >> N;

    memset(D, inf, sizeof(D));
    for (int i = 0; i <= N; i++)
        in >> V[i];

    for (int i = 1; i <= N; i++)
    {
        D[i][i] = 0;
        D[i][i + 1] = (long long) V[i - 1] * V[i] * V[i + 1];
    }

    for (int k = 2; k <= N; k++)
    {
        for (int i = 1; i <= N; i++)
            for (int j = i; j <= i + k - 1 && i + k <= N; j++)
                D[i][i + k] = min(D[i][i + k], D[i][j] + D[j + 1][i + k] + (long long) V[i - 1] * V[j] * V[i + k]);
    }

    out << D[1][N];
}