Cod sursa(job #502900)

Utilizator nickyyLal Daniel Emanuel nickyy Data 20 noiembrie 2010 18:58:15
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <stdio.h>
#define nmax 505
#define inf 100000000000000LL
using namespace std;
int n,p[nmax];
long long m[nmax][nmax];
    void read(void)
    {   FILE *fin=fopen("podm.in","r");
        int i;
        fscanf(fin,"%d",&n);
        for(i=0;i<=n;i++) fscanf(fin,"%d",p+i);
        fclose(fin);
    }

    void inm(void)
    {   int i,j,l,k;
        long long q;
        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]+(long long)p[i-1]*p[k]*p[j];
                    if(q<m[i][j]) m[i][j]=q;
                }
            }
        }
    }

    void write(void)
    {   FILE *fout=fopen("podm.out","w");
        fprintf(fout,"%lld",m[1][n]);
        fclose(fout);
    }

int main(void)
{   read(); inm(); write();
    return 0;
}