Pagini recente » Cod sursa (job #450074) | Cod sursa (job #2940538) | Cod sursa (job #1265377) | Cod sursa (job #2894910) | Cod sursa (job #886531)
Cod sursa(job #886531)
#include<fstream>
using namespace std;
const int MAX_N = 502;
int N, x;
int R[ MAX_N ], C[ MAX_N ];
unsigned long long int D[ MAX_N ][ MAX_N ];
int main()
{
ifstream f("podm.in");
ofstream g("podm.out");
f >> N >> x;
R[1] = x;
for(int i = 2; i <= N + 1; ++i)
{
f >> x;
C[i-1] = x;
R[i] = x;
}
for(int i = 1; i < N; ++i)
D[i][i+1] = R[i] * C[i] * C[i+1];
for(int q = 2; q < N; ++q)
for(int i = 1; i + q <= N; ++i)
{
int j = i + q;
unsigned long long int Min = D[i][i] + D[i+1][j] + (long long) ( (long long ) (R[i] * C[i]) * C[j] );
for(int k = i + 1; k < j; ++k)
{
if(D[i][k] + D[k+1][j] + (long long) ( (long long ) (R[i] * C[k]) * C[j] ) < Min)
Min = D[i][k] + D[k+1][j] + (long long) ( (long long ) (R[i] * C[k]) * C[j] );
}
D[i][j] = Min;
}
g << D[1][N] << '\n';
f.close();
g.close();
return 0;
}