Cod sursa(job #2138841)

Utilizator Y0da1NUME JMECHER Y0da1 Data 21 februarie 2018 21:50:34
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>

using namespace std;

#define maxn 505

int N;
int64_t oo;
int64_t d[maxn][maxn];  ///d[i][j] - nr minim de inmultiri pt a inmulti matricile i .. j
int64_t m[maxn];

int main()
{
    oo = (1LL<<62);
    ifstream in ("podm.in");
    ofstream out ("podm.out");

    //cout<<oo;
    in>>N;
    for(int i = 0; i <= N; ++i)
        in>>m[i];

    for(int i = 1; i < N; ++i)
        d[i][i + 1] = m[i - 1] * m[i] * m[i + 1];

    for(int l = 2; l < N; ++l)
        for(int i = 1; i <= N - l; ++i)
    {
        int j = i + l;
        d[i][j] = oo;
        for(int k = i; k < j; ++k)
            d[i][j] = min(d[i][j], d[i][k] + d[k+1][j] + m[i-1] * m[k] * m[j]);
    }
    out<<d[1][N];
    cout<<d[1][N];
    return 0;
}