Cod sursa(job #3160648)

Utilizator antoniadutuDutu Antonia antoniadutu Data 24 octombrie 2023 19:17:59
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
 #include <iostream>
 #include <fstream>

 using namespace std;

 ifstream fin("podm.in");
 ofstream fout("podm.out");

long long inf = 9e18;

long long d[502], n, minim[507][507];
int main() {
    fin >> n;
    for (int i = 1; i <= n + 1; i++)
        fin >> d[i];

   for(int i=1; i<=n; i++)
      minim[i][i]=0;

  for(int i=1; i<n; i++)
      minim[i][i+1]= d[i]*d[i+1]*d[i+2];


    for(int p=3; p<=n; p++)
      for(int i=1, j=p; j<=n; i++, j++)
          {
            // Ai.......Ak * A(k+1) .....Aj
            // Ai    A(i+1
            long long mini =inf;
            for (int k = i; k <= j - 1; k++)
              mini = min(mini, minim[i][k] + minim[k + 1][j]
              + d[i] * d[k + 1] * d[j + 1]);
            minim[i][j] = mini;
          }

   fout<<minim[1][n];
   return 0;
 }