Cod sursa(job #2077704)

Utilizator RaduXD1Nicolae Radu RaduXD1 Data 28 noiembrie 2017 14:35:54
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#define INF 2000000000000000000
using namespace std;
ifstream fin ("podm.in");
ofstream fout("podm.out");
long long n, i, j, L, d[502][502],k,v[502];
/// d[i][j] = costul minim sa reduc secventa de la i la j doar la elementele i si j


int main ()
{
    fin>>n;
    for(i=1;i<=n+1;i++)
        fin>>v[i];
    for (i=1;i<=n+1;i++)
        for (j=i+2;j<=n+1;j++)
            d[i][j]=INF;
    /// secvente doar din 2 elemente deci deja reduse

    for (L = 3; L<=n+1; L++) {
        /// calculez costul reducerii oricareisecvente de lungime L la capetele ei
        for (i=1;i+L-1 <= n+1; i++) {
            j = i+L-1;
            /// calculez d[i][j]
            for (k=i+1;k<=j-1;k++) {
                d[i][j] = min(d[i][j], v[i] * v[k] * v[j] + d[i][k] + d[k][j]);
            }
        }
    }
    fout<<d[1][n+1];
    return 0;
}