Cod sursa(job #536109)

Utilizator andrey932Andrei andrey932 Data 18 februarie 2011 11:37:26
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>

#define MAXN 510
#define INF 2000000000000000LL

using namespace std;

long long minn(long long a, long long b){
   return a>b? a:b;
}

ifstream fin("podm.in");
ofstream fout("podm.out");
int n,i,j,k,d[MAXN];
long long din[MAXN][MAXN];

int main()
{
    fin>>n;
    for(i=0;i<=n;i++) {
        fin>>d[i];
    }
    for(i=0;i<=n;i++) {
        din[i][i]=0;
    }
    for(i=1;i<n;i++) {
        din[i][i+1]=d[i-1]*d[i]*d[i+1];
    }

    for(k=2;k<n;k++) {
        for(i=1;i<=n;i++) {
            din[i][i+k]=INF;
            for(j=0;j<=k;j++) {
                din[i][i+k]=minn(din[i][i+k],din[i][i+j]+d[i-1]*d[i+j]*d[i+k]+din[i+j+1][i+k]);
            }
        }
    }
    fout<<din[1][n];
    fout.close();
    return 0;
}