Cod sursa(job #992714)

Utilizator deneoAdrian Craciun deneo Data 2 septembrie 2013 14:40:27
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
#include <iostream>
using namespace std;

const int MAXN = 510;
const long long INF = (1LL << 62);

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

int N;

long long sir[MAXN];
long long dp[MAXN][MAXN];

long long solve (int st, int fn) {
    if (dp[st][fn] != 0)
        return dp[st][fn];
    if (st == fn - 1) return 0;

    dp[st][fn] = INF;

    for (int i = st + 1; i < fn; ++i)
        dp[st][fn] = min (dp[st][fn], sir[st] * sir[i] * sir[fn] + solve (st, i) + solve (i, fn));
    return dp[st][fn];
}

int main() {
    fin >> N;

    for (int i = 1; i <= N + 1; ++i)
        fin >> sir[i];
    fout << solve (1, N + 1);
    return 0;
}