Cod sursa(job #465271)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 23 iunie 2010 19:00:42
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <stdio.h>
using namespace std;

#define INF 0x3f3f3f3f

long long m[530][530];
long long p[530], q;
long long n, i, j, k, l;

int main ()
{
    FILE *f = fopen ("podm.in","r");
    FILE *g = fopen ("podm.out","w");
    fscanf (f,"%lld", &n);
    for (i=1; i<=n+1; ++i)
        fscanf (f,"%lld", &p[i]);

    for (i=1; i<=n; ++i)
        m[i][i] = 0;        /* initializam diagonala principala pt matricele de tip Ai..i */

    for (l=2; l<=n; ++l)
        for (i=1; i<=n-l+1; ++i)
        {
            j = i + l - 1;
            m[i][j] = INF;
            for (k=i; k<j; ++k)
            {
                q = m[i][k] + m[k+1][j] + (p[i] * p[k+1] * p[j+1]);
                if (q < m[i][j])
                    m[i][j] = q;
            }
        }

    fprintf (g,"%lld", m[1][n]);

    fclose(g);
    fclose(f);
    return 0;
}