Pagini recente » Cod sursa (job #2268374) | Cod sursa (job #198791) | Cod sursa (job #2231229) | Cod sursa (job #3273219) | Cod sursa (job #2662504)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <climits>
#include <limits.h>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
typedef long long lint;
int n;
lint d[514];
lint dp[514][514];
void read(){
fin >> n;
for(int i = 0; i <= n; ++i){
fin >> d[i];
}
}
lint calculassion(int i, int j){
lint mini = LLONG_MAX;
for(int k = i; k < j; ++k){
mini = min(mini, dp[i][k] + dp[k+1][j] + d[i]*d[k+1]*d[j+1]);
}
return mini;
}
void diag(int i, int j){
while(i < n && j < n){
dp[i][j] = calculassion(i, j);
i++;j++;
}
}
void solve(){
for(int i = 1; i < n; ++i){
diag(0, i);
}
}
int main(){
// ios_base::sync_with_stdio(false);
read();
solve();
fout << dp[0][n-1];
return 0;
}