Pagini recente » Cod sursa (job #346341) | Borderou de evaluare (job #2012384) | Cod sursa (job #1955311) | Cod sursa (job #2963109) | Cod sursa (job #3158616)
#include <iostream>
#include <fstream>
#define MAXN 500
const long long INF = 1e17;
using namespace std;
long long d[MAXN][MAXN];
int v[MAXN + 1];
long long getMin(int i, int j){
if(d[i][j] != INF)
return d[i][j];
if (i == j)
return 0;
for(int k = i; k < j; k ++){
long long val = getMin(i, k) + getMin(k + 1, j) + (long long)v[i] * v[k + 1] * v[j + 1];
if(val < d[i][j])
d[i][j] = val;
}
return d[i][j];
}
int main(){
int i, j, n;
ifstream fin ("podm.in");
fin >> n;
for(i = 0; i < n; i ++){
for(j = 0; j < n; j ++)
d[i][j] = INF;
}
for(i = 0; i <= n; i ++){
fin >> v[i];
}
fin.close();
ofstream fout("podm.out");
fout << getMin(0, n- 1) << "\n";
fout.close();
return 0;
}