Cod sursa(job #468582)

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