Cod sursa(job #613339)

Utilizator TeodoraTanaseTeodora Tanase TeodoraTanase Data 21 septembrie 2011 21:17:16
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>
#include <algorithm>
#define N 505
#define inf 1000000000000

using namespace std;

int n;
long long s[N][N], a[N];

void citire()
{
    scanf ("%d ", &n);
    for (int i = 0; i <= n; ++ i)
        scanf ("%lld ", &a[i]);
}

void matrici()
{
    for (int i = 1; i < n; ++ i)
        s[i][i + 1] = a[i - 1] * a[i] * a[i + 1];
    for (int l = 2; l < n; ++ l)
        for (int i = 1; i <= n - l; ++ i)
        {
            int j = l + i;
            s[i][j] = inf;
            for (int k = i; k <= j - 1; ++ k)
                s[i][j] = min (s[i][j], s[i][k] + s[k + 1][j] + a[i - 1] * a[k] * a[j]);
        }
    printf ("%lld\n", s[1][n]);
}

int main()
{
    freopen ("podm.in", "r", stdin);
    freopen ("podm.out", "w", stdout);
    citire();
    matrici();
    return 0;
}