Cod sursa(job #1047676)

Utilizator chimistuFMI Stirb Andrei chimistu Data 4 decembrie 2013 20:07:08
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#define MAXN 501
#define INF 30000000000

using namespace std;

ifstream f("podm.in");
ofstream g("podm.out");

int n;
long long Mat[MAXN][MAXN];
long long A[MAXN];

long long inmultire(long long a, long long b, long long c){
    return a*b*c;
}

int main()
{
    int i,j,k,d;
    f >> n;
    for(i=0;i<=n;i++){
        f >> A[i];
    }
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            Mat[i][j] = INF;
    for(i=1;i<=n;i++)
        Mat[i][i] = 0;
    for(i=1;i<n;i++)
        Mat[i][i+1] = inmultire(A[i-1],A[i],A[i+1]);
    for(d=2;d<n;d++)
        for(i=1;i<=n-d;i++){
            for(k=i;k<i+d;k++)
                Mat[i][i+d] = min(Mat[i][i+d],(Mat[i][k]+Mat[k+1][i+d]+inmultire(A[i-1],A[k],A[i+d])));
        }
    g << Mat[1][n];
    return 0;
}