Cod sursa(job #677471)

Utilizator GaborGabrielFMI - GabrielG GaborGabriel Data 10 februarie 2012 11:35:30
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
using namespace std;
ifstream f("podm.in");
ofstream g("podm.out");

long long n,p[5001],m[20005][20005],i,j,mm,q;

int minim(int i,int j)
{
    int kkk;
    mm= m[i][i] + m[i+1][j] + p[i-1]*p[i]*p[j];
    for(kkk=i;kkk<j;kkk++)
    {
        q = m[i][kkk] + m[kkk+1][j] + p[i-1]*p[kkk]*p[j];
        if(q<mm)
            mm=q;
    }
    return mm;
}

int main()
{
    f>>n;
    for(i=0;i<=n;i++)
        f>>p[i];
    for(i=1;i<=n;i++)
    {
        m[i][i] = 0;
        m[i][i+1] = p[i-1]*p[i]*p[i+1];
    }
    int k;
    for(k=2;k<n;k++)
        for(i=1;i<=n;i++)
            if(i+k<=n)
                m[i][i+k] = minim(i,i+k);
    g<<m[1][n]<<'\n';
   /* for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
            g<<m[i][j]<<' ';
        g<<'\n';
    }*/
    return 0;
}