Pagini recente » Cod sursa (job #610971) | Cod sursa (job #1936681) | Cod sursa (job #2239838) | Cod sursa (job #587600) | Cod sursa (job #687974)
Cod sursa(job #687974)
#include <fstream>
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");
const int N=510;
int n;
int d[N];
long long m[N][N];
const long long INF=1<<60;
inline long long min(long long a,long long b){
return a<b ? a : b ;
}
void initialize(){
int i,j;
for(i=1;i<=n;++i){
for(j=1;j<=n;j++){
if(i==j){
m[i][i]=0;
continue;
}
m[i][j]=INF;
}
}
for(i=1;i<n;i++){
m[i][i+1]=d[i]*d[i+1]*d[i+2];
}
}
void solve(){
int i,j,k;
for(i=2;i<=n;++i){
for(j=1;j<=n-i;++j){
for(k=j;k<=j+i-1;++k){
m[j][j+i]=min(m[j][j+i],d[j]*d[k+1]*d[j+i+1]+m[j][k]+m[k+1][j+i]);
}
}
}
out<<m[1][n];
}
int main(){
int i;
in>>n;
for(i=1;i<=n+1;++i){
in>>d[i];
}
initialize();
solve();
return 0;
}