Pagini recente » Cod sursa (job #2314974) | Cod sursa (job #272230) | Cod sursa (job #2811948) | Cod sursa (job #1799432) | Cod sursa (job #1208359)
#include <iostream>
#include <fstream>
#define infinit 9999999999
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");
long long m[510][510];
int n,d[510];
void getMatrix()
{
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
cout<<m[i][j]<<" ";
}
cout<<"\n";
}
}
void init()
{
for(int i = 1; i < n; i++)
{
m[i][i+1] = d[i] * d[i + 1] * d[i + 2];
}
}
long long getMin(int x, int y)
{
long long min = infinit;
long long s;
for(int i = 1 ; i <= y - x; i++)
{
s = d[x] * d[x + i] * d[y + 1] + m[x][x + i - 1] + m[x + i][y];
if(min > s)
{
min = s;
}
}
return min;
}
void solve()
{
int k;
for(int j = 3; j <= n; j++)
{
k = 0;
for(int i = 1; i <= n - j + 1; i++)
{
m[i][j + k] = getMin(i,j);
k++;
}
}
}
void read()
{
in>>n;
for(int i = 1; i <= n + 1; i++)
{
in>>d[i];
}
}
void write()
{
out<<m[1][n];
}
int main()
{
read();
init();
solve();
write();
return 0;
}