Cod sursa(job #1502573)

Utilizator refugiatBoni Daniel Stefan refugiat Data 14 octombrie 2015 20:15:38
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<iostream>
#include<fstream>
using namespace std;
const int NMAX=502;
long long l[NMAX], m[NMAX][NMAX];
int main()
{
    ifstream si;
    si.open("podm.in");
    ofstream so;
    so.open("podm.out");
    int n;
    si>>n;
    int i;
    for(i=0;i<=n;++i)
    {
        si>>l[i];
    }
    for(i=1;i<n;++i)
    {
        m[i][i]=0;
        m[i][i+1]=l[i]*l[i-1]*l[i+1];
    }
    int j,k;
    long long minn;
    for(i=2;i<n;++i)
    {
        for(j=n-i;j;--j)
        {
            minn=m[j+1][j+i]+l[j]*l[j-1]*l[j+i];
            for(k=j+1;k<j+i;++k)
            {
                if(minn>m[j][k]+m[k+1][j+i]+l[j-1]*l[k]*l[j+i])
                    minn=m[j][k]+m[k+1][j+i]+l[j-1]*l[k]*l[j+i];
            }
            m[j][j+i]=minn;
        }
    }
    so<<m[1][n]<<'\n';
    so.close();
    si.close();
    return 0;
}