Cod sursa(job #1032941)

Utilizator frostwareDumitrascu Constantin frostware Data 16 noiembrie 2013 11:17:13
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
using namespace::std;

#define inFile  "podm.in"
#define outFile "podm.out"

#define min(a,b)    (a>b?b:a)

int n, d[501], C[500][500];

void Citire() {
    ifstream f(inFile);
    f >> n;
    for(int i = 0; i <= n; i++) {
        f >> d[i];
    }
    f.close();
}

void Solve() {
    int i, j, k, pas;
    for(int i = 1; i < n; i++) {
        C[i][i+1] = d[i-1] * d[i] * d[i+1];
    }
    for(pas = 2; pas < n; pas ++) {
        for(i = 1; i <= n-pas; i++) {
            j = i+pas;
            C[i][j] = 209999999;
            for(k = i; k < j; k++) {
                C[i][j] = min( C[i][j], C[i][k] + C[k+1][j] + d[i-1]*d[k]*d[j] );
            }
        }
    }
}

int main() {
    Citire();
    Solve();
    ofstream g(outFile);
    g << C[1][n] << '\n';
    g.close();
    return 0;
}