Cod sursa(job #2135683)

Utilizator flaviu_2001Craciun Ioan-Flaviu flaviu_2001 Data 19 februarie 2018 01:50:56
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

int64_t d[505], m[505][505], n;

int main()
{
    ifstream fin ("podm.in");
    ofstream fout ("podm.out");
    fin >> n;
    for (int64_t i = 0; i <= n; ++i)
        fin >> d[i];
    for (int i = 0; i < 505; ++i)
        for (int j = 0; j < 505; ++j)
            m[i][j] = 2000000000000000000LL;
    for (int i = 0; i <= n; ++i)
        m[i][i] = 0;
    for (int64_t i = 1; i < n; ++i)
        m[i][i+1] = d[i-1]*d[i]*d[i+1];
    for (int t = 2; t < n; ++t)
        for (int i = 0; i+t <= n; ++i)
            for (int k = i; k < i+t; ++k)
                m[i][i+t] = min(m[i][i+t], m[i][k]+m[k+1][i+t]+d[i-1]*d[k]*d[i+t]);
    fout << m[1][n] << "\n";
    return 0;
}