Cod sursa(job #921849)

Utilizator Alexxino7Alexandru Popescu Alexxino7 Data 21 martie 2013 17:40:31
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
using namespace std;
#define NMAX 503
#define INF 1LL<<60

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

long long N,P[NMAX],Sol[NMAX][NMAX];

int main(){

    fin >> N;
    for(int i=0;i<=N;i++) fin >> P[i];

    for(int d=1; d<N; d++){

        for(int i=1; i+d<=N; i++){

            if(d==1)    Sol[i][i+d] = P[i-1]*P[i]*P[i+1];

            else{
                Sol[i][i+d] = INF;
                for( int k=i ; k<i+d; k++){
                    Sol[i][i+d] = min(Sol[i][i+d], Sol[i][k]+Sol[k+1][i+d]+P[i-1]*P[k]*P[i+d]);
                }
            }
        }
    }

    fout << Sol[1][N] << "\n";

    return 0;
}