Cod sursa(job #381115)

Utilizator catalina5catalina serban catalina5 Data 9 ianuarie 2010 09:55:50
Problema Parantezare optima de matrici Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include<fstream>

using namespace std;

ifstream fin("podm.in");
ofstream fout("podm.out");

int n, d[505];
long m[505][505];


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

void inmultire(){
    for(int i=0;i<=n;i++)
        for(int j=0;j<=n;j++)
            m[i][j]=1000000;
    for(int i=1;i<=n;i++)
        m[i][i]=0;
    for(int i=1;i<=n-1;i++)
        m[i][i+1]=d[i-1]*d[i]*d[i+1];
    for(int d1=2;d1<=n;d1++)
        for(int i=1;i<=n-d1;i++){
            int j=i+d1;
            for(int k=i;k<j;k++){
                long mm=m[i][k]+m[k+1][i+d1]+d[i-1]*d[k]*d[i+d1];
                m[i][j]=(m[i][j]<mm)?m[i][j]:mm;
            }
        }
}

int main(){
    citire();
    inmultire();
    fout<<m[1][n]<<"\n";
    return 0;
}