Cod sursa(job #1959784)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 9 aprilie 2017 21:45:36
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
#include <cmath>
#define MaxN 505
#define INF 10000000000000
using namespace std;
 
FILE*IN,*OUT;

int N;
long long DP[MaxN][MaxN],v[MaxN];
int main()
{
    IN=fopen("podm.in","r");
    OUT=fopen("podm.out","w");

	fscanf(IN,"%d",&N);
	for(int i=0;i<=N;i++)
		fscanf(IN,"%d",&v[i]);
	for(int i=1;i<N;i++)
		DP[i][i+1]=v[i-1]*v[i]*v[i+1];
	for(int Dist=2;Dist<N;Dist++)
	{
		for(int i=1;i<=N-Dist;i++)
		{
			DP[i][i+Dist]=INF;
			for(int j=i;j<=i+Dist;j++)
				DP[i][i+Dist]=min(DP[i][i+Dist],v[i-1]*v[j]*v[i+Dist]+DP[i][j]+DP[j+1][i+Dist]);
		}
	}
	fprintf(OUT,"%lld",DP[1][N]);
    return 0;
}