Cod sursa(job #968696)

Utilizator dropsdrop source drops Data 2 iulie 2013 16:45:06
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#include <bitset>
#include <queue>
#include <deque>
#include <list>
#include <set>
#include <ctime>
#include <string>
#include <cstring>
#include <iomanip>
#include <algorithm>
using namespace std;
ifstream ff("podm.in");
ofstream gg("podm.out");
#define max 505

int n;
long long mm[max][max], dd[max];

void sol(){
	int l, r;
	long long s=0;
	for(int i=1;i<n;i++) mm[i][i+1]=dd[i]*dd[i+1]*dd[i+2];
	for(int j=3;j<=n;j++)
		for(int i=1;i+j-1<=n;i++){
		l=i; r=i+j-1;
		for(int m=l;m<r;m++){
			s=mm[l][m]+mm[m+1][r]+dd[l]*dd[m+1]*dd[r+1];
			if(mm[l][r]==0 || s<mm[l][r])mm[l][r]=s;
		}
	}
	gg << mm[1][n] << "\n";
}

int main(){
	ff >> n;
	for(int i=1;i<=n+1;i++) ff >> dd[i];
	sol();
}