Cod sursa(job #1384098)

Utilizator rogoz.bogdanRogoz Bogdan rogoz.bogdan Data 10 martie 2015 21:08:43
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#define NMX 1000000000000000
#define MX 501
using namespace std;

ifstream fin("podm.in");
ofstream fout("podm.out");
int n, d[MX];
long long M[MX][MX];

int main()
{
    int i,k,nr;
    long long minim;
    fin>>n;
    fin>>d[0];

    for(i=1; i<=n; i++) fin>>d[i];

    for(i=1; i<n; i++)
    {
        M[i][i+1] = d[i-1]*d[i]*d[i+1];
    }

    for(nr=2; nr<n; nr++)
    {
        for(i=1; i+nr-1<=n; i++)
        {
            minim = NMX;
            for(k=i; k<i+nr; k++)
            {
                if(M[i][k] + M[k+1][i+nr] + d[i-1]*d[k]*d[i+nr] < minim)
                {
                    minim = M[i][k] + M[k+1][i+nr] + d[i-1]*d[k]*d[i+nr];
                }
            }

            M[i][i+nr] = minim;
        }
    }

    fout<<M[1][n];

    fin.close(); fout.close();
    return 0;
}