Cod sursa(job #1211659)

Utilizator mariusn01Marius Nicoli mariusn01 Data 22 iulie 2014 23:20:56
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#define DIM 510

#define INF 10000000000000LL;

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

long long D[DIM][DIM];
long long L[DIM];

int n, i, j, k, d;

int main() {
    fin>>n;
    for (i=1;i<=n+1;i++)
        fin>>L[i];

    for (d=2;d<=n;d++) {
        for (i=1;i+d-1<=n;i++) {
            j = i+d-1;
            D[i][j] = INF;
            for (k=i;k<j;k++) {
                // consider matricele i,k si k+1,j
                if (D[i][j] > D[i][k] + D[k+1][j] + L[i]*L[k+1]*L[j+1])
                    D[i][j] = D[i][k] + D[k+1][j] + L[i]*L[k+1]*L[j+1];
            }
        }
    }

    fout<<D[1][n]<<"\n";

    return 0;
}