Pagini recente » Cod sursa (job #1755226) | Cod sursa (job #2414385) | Cod sursa (job #983374) | Cod sursa (job #1651851) | Cod sursa (job #687968)
Cod sursa(job #687968)
#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 int min(int a,int 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]=INT_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;
}