Cod sursa(job #1237314)

Utilizator hrazvanHarsan Razvan hrazvan Data 3 octombrie 2014 20:01:33
Problema Parantezare optima de matrici Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>
#define MAXN 500
long long ma[MAXN + 1][MAXN + 1];
int a[MAXN + 1];

int main(){
  FILE *in = fopen("podm.in", "r");
  int n, i;
  fscanf(in, "%d", &n);
  for(i = 0; i <= n; i++){
    fscanf(in, "%d", &a[i]);
  }
  fclose(in);
  int j, k;
  long long x;
  for(i = 1; i <= n; i++){
    for(j = 1; j < n; j++){
      if(i + j <= n){
        for(k = j; k < i + j && k <= n; k++){
          x = ma[j][k] + ma[k + 1][i + j] + 1LL * a[j - 1] * a[k] * a[i + j];
          if(ma[j][i + j] == 0 || ma[j][i + j] > x)
            ma[j][i + j] = x;
        }
      }
    }
  }
  FILE *out = fopen("podm.out", "w");
  fprintf(out, "%lld", ma[1][n]);
  fclose(out);
  return 0;
}