Pagini recente » Cod sursa (job #756166) | Cod sursa (job #2171018) | Cod sursa (job #1803634) | Istoria paginii runda/minune10/clasament | Cod sursa (job #1654718)
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <climits>
using namespace std;
long long vec[510], mat[505][505];
int n;
void Solve()
{
for (int i=1; i<=n; i++)
{
mat[i][i+1] = vec[i-1] * vec[i]* vec[i+1];
}
for (int j=2; j<=n; j++)
{
for (int i=0; i<=n-j ; i++)
{
int linie = i + 1;
int coloana = i + j;
long long minim = LONG_LONG_MAX;
for (int k=linie; k<coloana; k++)
{
long long aux = mat[linie][k] + mat[k+1][coloana] + vec[linie-1] * vec[k] * vec[coloana];
if (aux < minim)
minim = aux;
}
mat[linie][coloana] = minim;
}
}
printf("%d", mat[1][n]);
}
void Read()
{
scanf("%d\n", &n);
for (int i=0; i<=n; i++)
{
scanf("%d ", &vec[i]);
}
}
int main()
{
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
Read();
Solve();
return 0;
}