Cod sursa(job #2244887)

Utilizator danielsociuSociu Daniel danielsociu Data 24 septembrie 2018 06:14:58
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <cstring> //memset
#include <vector>
#include <climits>
std::ifstream cin("podm.in");
std::ofstream cout("podm.out");
#define maxn 1050
#define min(a,b) a<b?a:b
long long inf = 2000000000000;
using namespace std;
long long matMin[maxn][maxn],d[maxn];
int N;

int main()
{
    cin>>N;
    for(int i=0;i<=N;i++)
        cin>>d[i];
    for(int i=0;i<=N;i++)
        matMin[i][i+1]=d[i-1]*d[i]*d[i+1];
    for(int w=2;w<=N;w++)
        for(int i=1;i<=N-w+1;i++){
            int j=i+w;
            matMin[i][j]=inf;
            for(int k=i;k<j;k++)
                matMin[i][j]=min(matMin[i][j], matMin[k+1][j]+matMin[i][k]+d[i-1]*d[k]*d[j]);
    }
    cout<<matMin[1][N];
}