Pagini recente » Cod sursa (job #1222415) | Cod sursa (job #1453030) | Cod sursa (job #2180369) | Cod sursa (job #395906) | Cod sursa (job #846837)
Cod sursa(job #846837)
#include <cstdio>
const int MAX_SIZE(501);
const long long MAX_VALUE(MAX_SIZE * static_cast<long long>(10000));
int n;
int size [MAX_SIZE];
long long optimal [MAX_SIZE] [MAX_SIZE];
inline void read (void)
{
std::freopen("podm.in","r",stdin);
std::scanf("%d",&n);
for (int *iterator(size + 1), *end(size + n + 1) ; iterator <= end ; ++iterator)
std::scanf("%d",iterator);
std::fclose(stdin);
}
inline void print (void)
{
std::freopen("podm.out","w",stdout);
std::printf("%lld\n",optimal[1][n]);
std::fclose(stdout);
}
inline long long min (long long a, long long b)
{
return (a < b ? a : b);
}
inline void dynamic (void)
{
int length, i, j, k;
for (length = 1 ; length < n ; ++length)
for (i = 1 ; i + length <= n ; ++i)
{
j = i + length;
optimal[i][j] = MAX_VALUE;
for (k = i ; k < j ; ++k)
optimal[i][j] = min(optimal[i][j],optimal[i][k] + optimal[k + 1][j] + size[i] * size[j + 1] * size[k + 1]);
}
}
int main (void)
{
read();
dynamic();
print();
return 0;
}