Cod sursa(job #2379904)

Utilizator Teo_1101Mititelu Teodor Teo_1101 Data 14 martie 2019 11:18:16
Problema Parantezare optima de matrici Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("podm.in");
ofstream fout("podm.out");

const int NMAX = 502;

long long mat[NMAX][NMAX];
int N;
int x, y;
struct dimensiuni
{
    int l, c;
}D[NMAX];
void Read()
{
    fin >> N;
    fin >> x >> y;

    D[1].l = x;
    D[1].c = y;

    for(int i = 2; i <= N ; ++i)
    {
        fin >> x;

        D[i].c = x;
        D[i].l = D[i-1].c;
    }

    fin.close();
}

void Do()
{


    for(int d = 1; d < N; ++d)
    {
        for(int i = 1; i + d <= N; ++i)
        {
            for(int j = i; j < i + d; ++j)

               if(mat[i][i + d] == 0) mat[i][i + d] = 1LL *( mat[i][j] + mat[j+1][i+d] + D[i].l * D[j].c * D[i+d].c);

               else mat[i][i + d] = min(mat[i][i + d], 1LL *( mat[i][j] + mat[j+1][i+d] + D[i].l * D[j].c * D[i+d].c) );

        }
    }

    fout << mat[1][N] << "\n";
}
int main()
{
    Read();
    Do();
    return 0;
}