Cod sursa(job #985262)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 17 august 2013 09:34:32
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#define maxn 502
#define inf 1LL<<60

using namespace std;

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

long long v[maxn],m[maxn][maxn];
long long n,minval,val;

int main()
{
    fin>>n;
    for (int i=1; i<=n+1; ++i) fin>>v[i];

    for (int i=1; i<=n; ++i) m[i][i] = 0;
    for (int i=1; i<n; ++i) m[i][i+1] = v[i]*v[i+1]*v[i+2];

    for (int d=2; d<n; ++d)
    {
        for (int i=1; i+d<=n; ++i)
        {
            minval=inf;
            for (int k=i; k<i+d; ++k)
            {
                val = m[i][k]+m[k+1][i+d]+v[i]*v[k+1]*v[i+d+1];
                if (val < minval) minval = val;
            }
            m[i][i+d]=minval;
        }
    }

    fout<<m[1][n];
}