Cod sursa(job #813250)

Utilizator AGrigoriuStefanGrigoriu Stefan AGrigoriuStefan Data 15 noiembrie 2012 07:58:21
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#define infinit   9999999
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");

long long int cmin[501][501],d[501];
int n;

void par();
int minim(int a, int b);

int main()
{
    int i;
    fin>>n;
    for(i=0;i<=n;i++)
        fin>>d[i];

    par();

    fout<<cmin[1][n]<<'\n';
    return 0;
}

int minim(int a, int b)
{
    if(a>b)
    return b;
    return a;
}

void par()
{
int i,x,j,k;
for(i=1;i<n;i++)
    cmin[i][i+1]=d[i-1]*d[i]*d[i+1];

for(x=1;x<=n-1;x++)
    for(i=1;i<=n-x;i++)
    {
        j=x+i;
        cmin[i][j]=infinit;
        for(k=i;k<j;k++)
            cmin[i][j]= minim(cmin[i][j],cmin[i][k]+cmin[k+1][j]+d[i-1]*d[k]*d[j]);
    }
}