Cod sursa(job #2157199)

Utilizator adriangh3Adrian Gheorghiu adriangh3 Data 9 martie 2018 13:12:51
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");
#pragma pack(1)
#define MAXIM 510
typedef unsigned long long ll;
ll dp[MAXIM][MAXIM];

struct matrice
{
    ll lin, col;
}v[MAXIM];

int main()
{
    ll n, i, j;
    in>>n>>v[0].lin;
    for(i=1;i<=n;i++)
    {
        in>>v[i].lin;
        v[i-1].col=v[i].lin;
    }
    //for(i=0;i<n;i++) dp[i][i]=1;
    for(i=0;i<n-1;i++)
    {
        dp[i][1+i]=v[i].lin*v[i].col*v[i+1].col;
    }
    for(j=2;j<n;j++)
    {
        for(i=0;i<n-j;i++)
        {
            int l, c;
            l=i;c=j+i;
            dp[l][c]=~0;
            for(int k=l;k<c;k++) if(dp[l][k]+dp[k+1][c]<dp[l][c]) dp[l][c]=dp[l][k]+dp[k+1][c];
        }
    }
    out<<dp[0][n-1];
    return 0;
}