Pagini recente » Cod sursa (job #345508) | Cod sursa (job #83245) | Cod sursa (job #2882218) | Cod sursa (job #1155954) | Cod sursa (job #2138318)
#include<fstream>
#include<climits>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
typedef unsigned long long ull;
const int NMAX = 505;
const ull INF = ULLONG_MAX;
ull bestCuts[NMAX][NMAX];
int dim[NMAX];
int n;
inline void read_data(){
fin >> n;
int i;
for(i = 0; i <= n; ++i)
fin >> dim[i];
}
inline ull get_bestCuts(){
int leftIndex, rightIndex, cutter, length;
for(length = 2; length <= n; ++length)
for(leftIndex = 1; leftIndex <= n - length + 1; ++leftIndex){
rightIndex = leftIndex + length - 1;
bestCuts[leftIndex][rightIndex] = INF;
for(cutter = leftIndex; cutter < rightIndex; ++cutter)
bestCuts[leftIndex][rightIndex] = min(bestCuts[leftIndex][rightIndex], bestCuts[leftIndex][cutter] + bestCuts[cutter + 1][rightIndex] + 1ULL * dim[leftIndex - 1] * dim[cutter] * dim[rightIndex]);
}
return bestCuts[1][n];
}
int main(){
read_data();
fout << get_bestCuts();
}