Cod sursa(job #1311325)

Utilizator fluture.godlikeGafton Mihnea Alexandru fluture.godlike Data 7 ianuarie 2015 23:13:34
Problema Parantezare optima de matrici Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>
#define NMAX  523
#define VMAX  2000000000
FILE *fin, *fout;
int n, d[NMAX], min;
int main()
{
	fin = fopen("podm.in", "r");
	fout = fopen("podm.out", "w");
	fscanf(fin, "%d", &n);
	for(int i = 1; i<= n+1; i++) fscanf(fin, "%d", &d[i]);
	long long int arr[NMAX][NMAX];
	for(int i = 1; i <= n; i++) arr[i][i] = 0;
	for(int i = 2; i <= n; i++)
	{
		int c = 1;
		min = VMAX;
		for(int j = i; j <= n; j++)
		{
			for(int k = c; k< j; k++)
			{
				if(arr[c][k] + arr[k+1][j] + d[c]*d[k+1]*d[j+1] < min) min = arr[c][k] + arr[k+1][j] + d[c]*d[k+1]*d[j+1];
			}
			arr[c][j] = min;
			c++;
		}
	}
	fprintf(fout, "%lld\n", arr[1][n]);
	fclose(fin);
	fclose(fout);
	return 0;
}