Cod sursa(job #2121773)
| Utilizator | Data | 4 februarie 2018 12:31:08 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include <fstream>
#define Nmax 501
#define ll unsigned long long
using namespace std;
ifstream f("podm.in");
ofstream g("podm.out");
ll a[Nmax][Nmax];
ll v[Nmax];
int main()
{
ll n,i,l,k,minn;
f>>n;
for(i=0;i<=n;i++)
f>>v[i];
for(i=1;i<n;i++)
a[i][i+1]=v[i-1]*v[i]*v[i+1];
for(l=2;l<n;l++)
for(i=1;i+l<=n;i++)
{
minn=2e18+1;
for(k=i;k<i+l;k++)
if(a[i][k]+a[k+1][i+l]+v[i-1]*v[k]*v[i+l]<minn)
minn=a[i][k]+a[k+1][i+l]+v[i-1]*v[k]*v[i+l];
a[i][i+l]=minn;
}
g<<a[1][n];
return 0;
}
