Pagini recente » Cod sursa (job #1310499) | Cod sursa (job #1245901) | Cod sursa (job #2764746) | Cod sursa (job #2981747) | Cod sursa (job #687980)
Cod sursa(job #687980)
#include <fstream>
#include <limits.h>
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];
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]=LLONG_MAX;
}
}
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;
}