Pagini recente » Cod sursa (job #1352140) | Cod sursa (job #685821) | Cod sursa (job #297626) | Cod sursa (job #1012709) | Cod sursa (job #970727)
Cod sursa(job #970727)
//http://www.infoarena.ro/problema/podm
#include<fstream>
#include<cstring>
using namespace std;
const int MAXN=502;
const int INF=0x3f3f3f3f;
int n,minim;
int d[MAXN];
long long m[MAXN][MAXN];
void citire()
{
ifstream fin("podm.in");
fin>>n;
for (int i=0;i<=n;++i)
fin>>d[i];
fin.close();
}
void rezolva()
{
memset(m,INF,sizeof(m));
for (int i=1;i<=n;++i)
m[i][i]=0;
for (int nr=2;nr<=n;++nr)
{
for (int i=1;i<=n-nr+1;++i)
{
int j=i+nr-1;
for (int k=i,minim=INF;k<j;++k)
{
if (m[i][k]+m[k+1][j]+d[i-1]*d[k]*d[j]<minim)
minim=m[i][k]+m[k+1][j]+d[i-1]*d[k]*d[j];
m[i][j]=minim;
}
}
}
}
void afisare()
{
ofstream fout("podm.out");
fout<<m[1][n];
fout.close();
}
int main()
{
citire();
rezolva();
afisare();
return 0;
}