Cod sursa(job #1074140)

Utilizator Aida_SilviaStrimbeanu Aida Silvia Aida_Silvia Data 7 ianuarie 2014 11:19:41
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <cmath>

#define maxn 573
#define infinit pow(2,31)
#define ll long long

using namespace std;

ll mat[maxn][maxn];

ll minim(ll a, ll b)
{
    if (a<b) return a;
    return b;
}

int main()
{
    int n, k,i,j;
    int vect[maxn];
    ifstream in("podm.in");
    ofstream out("podm.out");

    in>>n;

    for(i=0;i<=n;i++)
        in>>vect[i];

    for (i=1;i<=n;i++)
        for (j=i+2;j<=n;j++)
           mat[i][j]=infinit;

    for (i=1;i<=n;i++)
            mat[i][i]=0;

    for ( i=1;i<n;i++)
        mat[i][i+1]=vect[i-1]*vect[i]*vect[i+1];

    for (int l=2;l<n;l++)
        for (i=1;i+l<=n;i++)
        {
            j=i+l;
            for (k=i;k<j;k++)
                mat[i][j]=minim(mat[i][j], mat[i][k]+mat[k+1][j]+ vect[i-1]*vect[k]*vect[j]);
        }

        out<<mat[1][n];


    return 0;
}