Pagini recente » Cod sursa (job #901951) | Cod sursa (job #70552) | Cod sursa (job #3244998) | Cod sursa (job #1545363) | Cod sursa (job #1075513)
#include <fstream>
using namespace std;
#define DEBUG false
#define MAXN 512
#if DEBUG
#include <iostream>
#define INFILE "/Users/biordach/Documents/Xcode Projects/training/training/podm.in"
#define __OUT cout
#else
#define INFILE "podm.in"
#define OUTFILE "podm.out"
ofstream __OUT(OUTFILE);
#endif
#define INF 1999999999
void readInput();
void solve();
void printOutput();
long long n;
long long v[MAXN], a[MAXN][MAXN];
int main(int argc, const char * argv[])
{
readInput();
solve();
printOutput();
#if DEBUG == false
__OUT.close();
#endif
return 0;
}
void readInput(){
ifstream in(INFILE);
in>>n;
for(int i =0 ; i<=n; i++)
in>>v[i];
in.close();
}
void solve(){
for(int i=1;i<n;i++){
a[1][i] = v[i-1] * v[i] * v[i+1];
}
for(int l = 2; l<=n; l++){
for(int i=1; i + l <= n; i++){
int min = INF;
for(int length1 = 0; length1 < l; length1++) {
int j = i + length1 + 1;
int length2 = l - length1 -1;
#if DEBUG
__OUT<<"a[length1][i]: "<<a[length1][i]<<'\n';
__OUT<<"a[length2][j]: "<<a[length2][j]<<'\n';
__OUT<< v[i-1] << ' '<< v[j-1] <<' '<< v[i+l]<<'\n';
__OUT<<'\n';
#endif
int op = a[length1][i] + a[length2][j] + v[i-1] * v[j-1] * v[i+l];
if(op < min){
min = op;
}
}
a[l][i] = min;
}
}
#if DEBUG
for(int i=0; i<n; i++){
for(int j=0;j<n; j++)
__OUT<<a[i][j]<<' ';
__OUT<<'\n';
}
#endif
}
void printOutput(){
__OUT<<a[n-1][1]<<'\n';
}