Cod sursa(job #2042178)

Utilizator Cristi_ChiraChira Cristian Cristi_Chira Data 18 octombrie 2017 10:09:47
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#define dm 505
#define LL long long
#define inf8 100000000000000000LL
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
LL minim(LL a, LL b)
{
    if(a>b)
        return b;
    else return a;
}
int n;
LL a[dm];
LL m[dm][dm];
int main()
{
    fin >> n;
    for(int i = 0; i <= n; i++)
        fin >> a[i];
    for(int i = 1; i <= n; i++)
        m[i][i] = 0;
    for(int i = 1; i <= n - 1; i++)
        m[i][i+1] = a[i-1] * a[i] * a[i+1];
    for(int i = 2; i < n; i++ ){
        for(int j = 1; j <= n - i; j++){
            m[i][i+j] = inf8;
            for(int k = i; k < i + j; k++)
                m[j][j+i] = minim(m[i][i+j], m[j][k]+m[k+1][i+j]+a[j-1]*a[k]*a[i+j]);
        }
    }
    fout << m[1][n];
    return 0;
}