Cod sursa(job #1492394)

Utilizator stoianmihailStoian Mihail stoianmihail Data 27 septembrie 2015 17:36:21
Problema Parantezare optima de matrici Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <limits.h>

#define Nadejde 501

#define ll long long

int N;
int val[Nadejde];
ll int d[Nadejde][Nadejde];

ll int MIN(ll int X, ll int Y) {
  return (X < Y) ? X : Y;
}

int main(void) {
  int i, j, k, q;
  FILE *f = fopen("podm.in", "r");

  fscanf(f, "%d", &N);
  for (i = 0; i <= N; i++) {
    fscanf(f, "%d", &val[i]);
  }
  fclose(f);

  f = fopen("podm.out", "w");

  for (q = 1 + 1; q <= N; q++) {
    for (i = 1; i <= N - q + 1; i++) {
      j = i + q - 1;
      d[i][j] = LLONG_MAX;
      for (k = i; k < j; k++) {
        d[i][j] = MIN(d[i][j], d[i][k] + d[k + 1][j] + (1LL * val[i - 1] * val[k] * val[j]));
      }
    }
  }
  fprintf(f, "%lld\n", d[1][N]);
  fclose(f);

  /// Multumim Doamne!
  puts("Doamne ajuta!");
  return 0;
}