Cod sursa(job #661213)

Utilizator vlad2901Vlad Berindei vlad2901 Data 14 ianuarie 2012 00:07:11
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#include <algorithm>

#define NMAX 501

using namespace std;

long long m[NMAX][NMAX], p[NMAX];
int N, INF = 1LL<<60;

int main()
{
    int i, j, k;

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

    scanf("%d", &N);

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

    for(i=N;i>=1;--i)
    {
        for(j=i+1;j<=N;++j)
        {
            m[i][j] = INF;
            for(k=i;k<j;++k)
            {
                if(m[i][j] > m[i][k] + m[k+1][j] + p[i-1] * p[k] * p[j])
                {
                    m[i][j] = m[i][k] + m[k+1][j] + p[i-1] * p[k] * p[j];
                }
            }
        }
    }

    printf("%d", m[1][N]);

    return 0;
}