Cod sursa(job #1828965)

Utilizator raulmuresanRaul Muresan raulmuresan Data 14 decembrie 2016 09:40:48
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include<fstream>
#include<vector>
#include<string>
#define NMAX 505
#define INF   100000000000000000LL

using namespace std;

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


string sir;
int i, n, k, j,contor,st,dr,sol,x,y;
long long int A[NMAX], d[NMAX][NMAX];

int main()
{
    fin >> n;
    for(i = 0; i <= n; i++)
    {
        fin >> A[i];
    }

    for(i = 1; i <= n; i++)
    {
        d[i][i] = 0;
    }
    for(i = 1; i <= n - 1; i++)
    {
        //fout << i <<" "<<i+1<<"\n";
        d[i][i + 1] = A[i - 1] * A[i] * A[i + 1];
    }
    for(int diag = 2; diag <= n - 1; diag++)
    {
        for(i = 1; i + diag <= n; i++)
        {
            int j = i + diag;
            //fout << i <<" "<<j<<"------\n";
            d[i][j] = INF;
            for(k = i; k < j; k++)
            {
                //fout << i <<" " <<k<<"---"<<k+1<<" "<<j<<"\n";
                d[i][j] = min(d[i][j], d[i][k] + d[k + 1][j] + A[i - 1]*A[k]*A[j]);
            }

        }
    }

    for(i = 1; i <= n; i++)
    {
        for(j = 1; j <= n; j++)
        {
            //fout << d[i][j] << " ";
        }
        //fout << "\n";

    }
    fout << d[1][n]<<"\n";
}