Cod sursa(job #1023322)

Utilizator cristitamasTamas Cristian cristitamas Data 6 noiembrie 2013 19:56:37
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <algorithm>
#define INF 100000000000000000LL
using namespace std;

unsigned long long int A[505][505];
unsigned long long d[500];
int n;

void citire(){
    ifstream f("podm.in");
    f>>n;
    for(int i=0;i<=n;++i)
        f>>d[i];
    f.close();
}


void calculare_minim(int i,int j){
    for(int k=i;k<j;++k){
        A[i][j]=min(A[i][j],A[i][k]+A[k+1][j]+d[i-1]*d[k]*d[j]);
        //unsigned long long int rez=A[i][k]+A[k+1][j]+d[i-1]*d[k]*d[j];
        //if(!A[i][j] || rez<A[i][j]){
            //A[j][i]=k;
            //A[i][j]=rez;
        }
}


void rezolvare(){
    for(int contor=2;contor<=n;++contor)
        for(int i=1,j=contor;j<=n;++i,++j)
        {
            A[i][j]=INF;
            calculare_minim(i,j);
        }
}


int main()
{
    citire();
    rezolvare();
    ofstream fout("podm.out");
    fout<<A[1][n];
    fout.close();
    return 0;
}