Cod sursa(job #1316085)

Utilizator sorina.andreiAndrei Sorina sorina.andrei Data 13 ianuarie 2015 15:14:57
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <iostream>

using namespace std;
int main()
{
    int  n;
    unsigned long long m[503][503];
    ifstream fin ("podm.in");
    ofstream fout ("podm.out");
    fin>>n;
    int v[510];
    for (int i=1; i<=n+1; ++i)
    {
        fin>>v[i];
    }
    for(int i=1; i<=n; ++i)
    {
        for(int j=1; j<=n; ++j)
        {
            if(j+i>n)continue;
            if(i==1)
            {  
                m[j][j+i]=v[j]*v[j+1]*v[j+2];
            }
            else
            {
                for(int k=j; k<j+i; ++k)
                {
                    if(m[j][j+i]==0)m[j][j+i]=m[j][k]+m[k+1][j+i]+v[j]*v[k+1]*v[j+i+1];
                    else         m[j][j+i]=min(m[j][k]+m[k+1][j+i]+v[j]*v[k+1]*v[j+i+1],m[j][j+i]);
                }

            }
        }

    }
    fout<<m[1][n];



}