Cod sursa(job #2157137)

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

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

int main()
{
    int 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]=min(dp[l+1][c]+v[l].lin*v[l].col*v[c].col, dp[l][c-1]+v[c].col*v[c].lin*v[l].lin);
        }
    }
    out<<dp[0][n-1];
    return 0;
}