Cod sursa(job #525148)

Utilizator david_raucaRauca Ioan David david_rauca Data 24 ianuarie 2011 13:29:33
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include<fstream>
using namespace std;
 
ifstream fin("podm.in");
ofstream fout("podm.out");
 
#define INF 1000000000000000000LL
#define DIM 1002
//#define DIM1 10001
 
int n;
long long c[DIM][DIM];
long long d[DIM];
 
void Read();
void PD_mixt();
void Write();
 
int main()
{
    Read();
    PD_mixt();
    Write();
     
    fin.close();
    fout.close();
     
    return 0;
}
 
void Read()
{
    fin >> n;
    for( int i = 1; i <= n; ++i )
        for( int j = i; j <= n; ++j )
            c[i][j] = INF;
             
    for( int i = 0; i <= n; ++i )
        fin >> d[i];
}
 
void PD_mixt()
{
    for( int i = 1; i <= n; ++i )
        c[i][i] = 0;
 
    for( int L = 1; L <= n; ++L )
        for( int i = 1; i <= n - L; ++i )
        {
            int j = i + L;
             
            for( int k = i; k < j; ++k )
                c[i][j] = min( c[i][j], c[i][k] + c[k+1][j] + d[i-1] * d[j] * d[k] );
        }
}
 
void Write()
{
    fout << c[1][n] << '\n';
}