Cod sursa(job #492964)

Utilizator chrissBota Cristian chriss Data 16 octombrie 2010 16:09:17
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>
#define INF 100000000000000000
#define min(a,b) a>b?b:a

using namespace std;

long long D[505][505],d[505];
int n,i,j,k,t;

int main()
{
    ifstream fin("podm.in");
    ofstream fout("podm.out");

    fin>>n;
    for(i=0; i<=n; ++i)
        fin>>d[i];
    for(i=1; i<=n-1; ++i)
        D[i][i+1]=d[i-1]*d[i]*d[i+1];
    for(t=2; t<n; ++t)
        for(i=1; i<=n-t; ++i)
        {
            j=i+t;
            D[i][j]=INF;
            for(k=i; k<j; ++k)
                D[i][j]=min(D[i][j], D[i][k]+D[k+1][j] + d[i-1]*d[k]*d[j]);
        }
    fout<<D[1][n];
    fin.close();
    fout.close();
    return 0;
}