Cod sursa(job #2497289)

Utilizator UrsuCEUrsu Catalin Eugen UrsuCE Data 22 noiembrie 2019 12:50:38
Problema Parantezare optima de matrici Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
long long  dp[200][200];
int  n;
long long  d[200];
int main()
{
   int i , dif, k ,x , j ;
   long long s, ans = 0;
    fin >> n;
    for(i = 0; i <= n ; i ++)
        fin >> d[i];

    for(i = 1; i < n ;i ++)
        dp[i][i + 1] = d[i - 1] * d[i] * d[i + 1];

    for(dif = 2; dif < n ; dif ++)
        for(i = 1; i <= n - dif; i++)
    {
        j = i + dif;
        ans = 1LL<<59;
        for(k = i; k <= j - 1; k ++)
            {
                s = (dp[i][k] + dp[k + 1][j] + d[i - 1] * d[k] * d[j]);
                ans = min(s, ans);
            }
        dp[i][j] = ans;
    }
    fout << dp[1][n];
fin.close();
fout.close();
    return 0;
}