Cod sursa(job #717098)

Utilizator andu04Popa Andi andu04 Data 19 martie 2012 17:42:05
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <stdio.h>
#define INF 0x3f3f3f
using namespace std;

int n;
long long d[10001],m[501][501];

void citire()
{
    freopen("podm.in","r",stdin);
    scanf ("%d",&n);
    for (int i=0;i<=n;i++)
        scanf ("%lld",&d[i]);

    for (int i=0;i<=n;i++)
        for (int j=0;j<=n;j++)
        {
            m[i][j]=INF;
            if (i==j)
                m[i][j]=0;
        }

}
/*void afis(int i,int j)
{
    if (i==j)
    {
        cout<<(char)(i+64);
    }
    else
    {
        cout<<"(";
        afis(m[i][j],j);
        afis(i,m[i][j]+1);
        cout<<")";
    }
}
*/
void rez()
{
    freopen ("podm.out","w",stdout);

    for (int y=1;y<=n;y++)
        for (int i=1,j=y+i;i<=n-y;j++,i++)
            for (int k=i;k<j;k++)
                m[i][j]=min(m[i][j], m[i][k]+m[k+1][j]+d[i-1]*d[k]*d[j]);
    printf("%lld",m[1][n]);

    //afis(n,1);
}
int main()
{
    citire();
    rez();
    return 0;
}