Pagini recente » Cod sursa (job #2432916) | Cod sursa (job #493681) | Cod sursa (job #3188477) | Cod sursa (job #920861) | Cod sursa (job #2554991)
#include <fstream>
std::ifstream f("podm.in");
std::ofstream g("podm.out");
const long long INF = (1LL << 61);
const int NMAX = 505;
long long n,v[NMAX],D[NMAX][NMAX];
int main(){
f >> n;
n++;
for(int i = 1;i <= n;++i)
f >> v[i];
/// Se da un sir a cu n elemente
/// Se da urmatoare operatie : (i,j,k) elimina v[k] din secventa (i,j).costul acestei operatii este v[i] * v[j] * v[k]
/// sa se determine costul minim astfel incat sa ramana decat 1 si n
for(int len = 3;len <= n;++len){
for(int i = 1;i + len - 1 <= n;++i){
int j = i + len - 1;
D[i][j] = INF;
for(int k = i + 1;k < j;++k){
if(D[i][j] > D[i][k] + D[k][j] + v[i] * v[j] * v[k])
D[i][j] = D[i][k] + D[k][j] + v[i] * v[j] * v[k];
}
}
}
g << D[1][n];
return 0;
}