Cod sursa(job #1049527)

Utilizator mariacMaria Constantin mariac Data 7 decembrie 2013 14:17:56
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#define MAX 510
#define INF 0xfffffffffffff
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
int N;
long long m[MAX][MAX], d[MAX];
long long mini(long long a, long long b)
{
    if( a  < b) return a;
        else return b;
}
int main()
{
    int i, j, k;
    fin>> N;

    for( i = 0; i <= N; i++)
        fin>>d[i];
    for(i = 1; i <= N; i++)
        for(j = i + 2; j <= N; j++)
            m[i][j] = INF;
    for(i = 1; i <= N; i++)
        m[i][i] = 0;
    for(i = 1; i < N; i++)
        m[i][i+1] = d[i - 1] * d[i] * d[ i + 1];
    for(int l = 2; l < N; l++)
        for( i = 1; i + l <= N; i++)
        {
            j = i + l;

            for( k = i; k < j; k++)
                m[i][j] = mini(m[i][j], m[i][k] + m[k+1][j] + d[i - 1] * d[k] * d[j]);

        }
    fout<<m[1][N];
    return 0;
}