Cod sursa(job #904366)

Utilizator michael9ufoStanescu Mihai michael9ufo Data 4 martie 2013 11:18:14
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>

using namespace std;

int N, i, j;

long long D[505][505], V[505];

long long min(long long a, long long b)
{
    return a < b ? a : b;
}

int main()
{

    freopen("podm.in", "r", stdin);
    freopen("podm.out", "w", stdout);

    cin>>N;

    for(i=0;i<=N;++i)
        scanf("%d", &V[i]);

    //for(i=0;i<=N;++i)
    //    cout<<V[i]<<" ";

    for(i=1;i<=N;++i)
        D[i][i] = 0;

    for(i=1;i<=N-1;++i)
        D[i][i+1] = V[i-1] * V[i] * V[i+1];

    //cout<<"\n";

    int w, k;

    for(w=2;w<=N-1;++w)
    {

        for(i=1;i<=N-w;++i)
        {

            j = i + w;
            D[i][j] = 10000000000000000;
            for(k=i;k<=j-1;++k)
                D[i][j] = min(D[i][j], D[i][k] + D[k+1][j] + V[i-1] * V[k] * V[j]);

        }

    }

  /*  for(i=1;i<=N;++i)
    {
        for(j=1;j<=N;++j)
            cout<<D[i][j]<<" ";

        cout<<"\n";
    }
*/
    cout<<D[1][N]<<"\n";

    return 0;
}