Cod sursa(job #2697455)

Utilizator Xutzu358Ignat Alex Xutzu358 Data 18 ianuarie 2021 17:39:56
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
using namespace std;

ifstream f("podm.in");
ofstream g("podm.out");

long long mat[505][505];
int n;
long long d[505];
long long oo=LONG_MAX/3;

void init() {
    for (int i=1;i<=n;i++) {
        for (int j=1;j<=n;j++) {
            mat[i][j]=oo;
        }
    }
}

int main()
{
    f >> n;
    init();
    for (int i=0;i<=n;i++) {
        f >> d[i];
    }
    for (int i=1;i<=n;i++) {
        mat[i][i] = 0;
    }
    for (int i=1;i<n;i++) {
        mat[i][i+1] = d[i-1] * d[i] * d[i+1];
    }
    for (int x=2;x<n;x++) {
        for (int i=1;i<=n-x;i++) {
            for (int k=i;k<=i+x;k++) {
                mat[i][i+x] = min(mat[i][i+x],mat[i][k]+mat[k+1][i+x]+d[i-1]*d[k]*d[i+x]);
            }
        }
    }
    g << mat[1][n];
    return 0;
}