Pagini recente » Cod sursa (job #1193373) | Cod sursa (job #1042449) | Cod sursa (job #3283425) | Cod sursa (job #2828465) | Cod sursa (job #970694)
Cod sursa(job #970694)
//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];
int 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;
}