Cod sursa(job #468578)

Utilizator purdea.andreiPurdea Andrei purdea.andrei Data 4 iulie 2010 08:24:26
Problema Parantezare optima de matrici Scor 70
Compilator c Status done
Runda Arhiva educationala Marime 0.55 kb
#include <stdio.h>
#define MAXN 502
long long n, i, j, q, k, l;
long long p[MAXN];
long long m[MAXN][MAXN];
int main() {
  freopen("podm.in", "r", stdin);
  freopen("podm.out", "w", stdout);
  scanf("%d", &n);
  for (i=0;i<=n;++i) {
    scanf("%lld", &p[i]);
    m[i][i] = 0;
  }
  for (l=2;l<=n;++l) {
    for (i=1;i<=n;++i) {
      j = i + l - 1;
      long long t = -1LL;
      for (k=i;k<j;k++) {
        q = m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j];
        if (t==-1 || q < t) t = q;
      }
      m[i][j] = t;
    }
  }
  printf("%lld\n", m[1][n]);
  return 0;
}