Cod sursa(job #1528162)

Utilizator radu_myDavid Radu-Andrei radu_my Data 19 noiembrie 2015 10:14:33
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
#include <algorithm>
using namespace std;
 
#define Nmax 503
 
int n, i, j, k, l, d[Nmax];
long long a[Nmax][Nmax];
 
void podm () {
     
    for (i = 1; i < n; i++)
        a[i][i+1] = (long long)d[i] * d[i+1] * d[i+2];
     
    for (k = 3; k <= n; k++) 
        for (i = 1; i <= n; i++) {
            j = i + k - 1; a[i][j] = (long long)1 << 60;
            if (j > n) j = n;
            for (l = i + 1; l <= j; l++) 
                a[i][j] = min (a[i][j], a[i][l+1] + a[l][j] + (long long)d[i] * d[l] * d[j+1]);
        } 
 
}
 
int main () {
 
    FILE *f = fopen ("podm.in", "r");
    FILE *g = fopen ("podm.out", "w");
     
    fscanf (f, "%d", &n);
    for (i = 1; i <= n + 1; i++)
        fscanf (f, "%d", &d[i]);
     
    podm ();
    fprintf (g, "%lld", a[1][n]);
     
    fclose (f);
    fclose (g);
     
    return 0;
}