Cod sursa(job #914547)

Utilizator alexandru70Ungurianu Alexandru alexandru70 Data 14 martie 2013 11:35:23
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <fstream>
#define LL long long
using namespace std;
ifstream in ("podm.in"); ofstream out ("podm.out");
int p[512];
LL m[512][512];

LL optMatProd(int n, int*p)
{
  for(int l = 2; l <= n; l++)
  {
    for(int i = 1; i <=n-l+1;i++)
    {
      int j = i+l-1;
      m[i][j]=0xfffffffffffff;
      for(int k = i; k <= j-1; k++)
      {
        int q = m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j];
        if(q<m[i][j])m[i][j]=q;
      }
    }
  }
  return m[1][n];
}

int n;
int main()
{
  in >> n;
  for(int i = 0; i <= n; i++)
  {
    in >> p[i];
  }
  out << optMatProd(n,p);
}