Cod sursa(job #1104009)

Utilizator beldeabogdanBogdan Beldea beldeabogdan Data 10 februarie 2014 11:36:48
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>
#define minim(a,b) (a<b)?(a):(b)
using namespace std;

unsigned long long a[510][510];
unsigned int d[510];
int n;

int main() {
    freopen("podm.in","r",stdin);
    freopen("podm.out","w",stdout);
    scanf("%d",&n);
    for (int i=0;i<=n;i++) scanf("%u",&d[i]);
    for (int i=1;i<n;i++) a[i][i+1] = (unsigned long long)d[i-1]*d[i]*d[i+1];
    for (int dt=2;dt<=n-1;dt++) {
        for (int i=1;i<=n-dt;i++) {
            int j = i+dt;
            a[i][j] = 0xffffffffffffffff;
            for (int k=i;k<j;k++) {
                a[i][j] = minim(a[i][j],a[i][k] + a[k+1][j] + (unsigned long long)d[i-1]*d[k]*d[j]);
            }
        }
    }
    printf("%llu\n",a[1][n]);
    return 0;
}