Cod sursa(job #2050417)

Utilizator Laura_CorneiLaura Maria Cornei Laura_Cornei Data 28 octombrie 2017 09:50:43
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#define nmax 505
#define inf 200000000000000000
using namespace std;
fstream f1("podm.in", ios::in);
fstream f2("podm.out", ios::out);
int n, d[nmax];
long long int pd[nmax][nmax];
///dim matricei a[i]- d[i-1][i]
///pd[i][j]= nrmin de inmultiri pentru a calc inmultirea matricilor a[i], a[i+1],.., a[j]
int main()
{
    int i, k, x;
    f1>>n;
    for(i=1; i<=n+1; i++)
        f1>>d[i];
    ///caz part k=1;
    for(i=1; i<n; i++)
        pd[i][i+1]=(long long int)d[i]*d[i+1]*d[i+2];
    for(k=2; k<=n; k++)
    {
        for(i=1; i<=n-k; i++)
        {
            pd[i][i+k]= inf;
            for(x=0; x<k; x++)
                if(pd[i][i+k]> (pd[i][i+x]+ pd[i+x+1][i+k]+(long long int) d[i]* d[i+x+1]* d[i+k+1])) pd[i][i+k]=pd[i][i+x]+ pd[i+x+1][i+k]+ (long long int)d[i]* d[i+x+1]* d[i+k+1];
        }
    }
    f2<<pd[1][n];
    return 0;
}