Cod sursa(job #3155889)
| Utilizator | Data | 10 octombrie 2023 09:18:29 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 80 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.68 kb |
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
long long d[501],j,k,l;
int n,i;
long long dp[501][501];
int main()
{
fin>>n;
for(i=1; i<=n+1; i++)
{
fin>>d[i];
}
for(i=1; i<n; i++)
{
dp[i][i+1]=(d[i]*d[i+1]*d[i+2])*1ll;
}
for(l=3; l<=n; l++)
{
for(i=1; i<=n-l+1; i++)
{
long long j=i+l-1;
dp[i][j]=INT_MAX;
for(k=i; k<j; k++)
{
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+d[i]*d[k+1]*d[j+1]*1ll);
}
}
}
fout<<dp[1][n];
return 0;
}
