Cod sursa(job #1791339)

Utilizator Aquaryus0Alexandru Benchea Aquaryus0 Data 29 octombrie 2016 11:41:52
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <cstdio>

using namespace std;

long long n;
long long v[510], mat[510][510];
long long suma;

void read()
{
    long long x;
    scanf("%lld", &n);
    for(long long i=0; i<=n; i++)
    {
        scanf("%lld", &x);
        v[i] = x;
    }
}

void sol()
{
    long long l = 1;
    long long mini;

    while(l<n)
    {
        for(long long i=1; i<=n-l; i++)
        {
            long long j=i+l;

            for(long long k=i; k<j; k++)
            {
                if(k==i)
                    mini = (mat[i][k] + mat[k+1][j] + v[i-1] * v[k] * v[j]);
                else if(mini>(mat[i][k] + mat[k+1][j] + v[i-1] * v[k] * v[j]))
                    mini = (mat[i][k] + mat[k+1][j] + v[i-1] * v[k] * v[j]);
            }

            mat[i][j] = mini;
        }

        l++;
    }

    cout<<mat[1][n];
}

int main()
{
    freopen("podm.in", "r", stdin);
    freopen("podm.out", "w", stdout);
    read();
    sol();

}