Cod sursa(job #1364492)
| Utilizator | Data | 27 februarie 2015 18:14:09 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.51 kb |
#include <iostream>
#include <fstream>
#define D 10000000000LL
using namespace std;
ifstream f("podm.in");
ofstream g("podm.out");
long long n,m[505][505],v[505];
long long podm(long long i, long long j)
{
int k;
if(i==j)
return 0;
if(i+1==j)
return v[i-1]*v[i]*v[j];
if(m[i][j])
return m[i][j];
m[i][j]=D;
for(k=i;k<j;k++)
m[i][j]=min(m[i][j],v[i-1]*v[k]*v[j]+podm(i,k)+podm(k+1,j));
return m[i][j];
}
int main()
{
int i,j;
f>>n;
for(i=0;i<=n;i++)
f>>v[i];
g<<podm(1,n);
}