Pagini recente » Cod sursa (job #1987482) | Profil Vladyy | Cod sursa (job #1051041)
#include<iostream>
#include<fstream>
#include<cmath>
#define Nmax 505
#define oo pow(2,31)
using namespace std;
class Paranthesis
{
int *vector;
long long **M;
int n;
public:
long long min(long long a , long long b)
{
if(a<b)
return a;
else
return b;
}
void read()
{
ifstream f("podm.in");
f>>n;
vector = new int[n+1];
M = new long long*[n+1];
for(int i= 0 ; i<=n+1;i++)
M[i]=new long long[n+1];
for(int i =0;i<=n;i++)
f>>vector[i];
f.close();
}
void problem()
{
for(int i=1;i<=n;i++)
M[i][i]=0;
for(int i=1;i<=n;i++)
for(int j=i+2;j<=n;j++)
M[i][j]=oo;
for(int i=1;i<n;i++)
M[i][i+1]=vector[i-1]*vector[i]*vector[i+1];
for(int l=2;l<n;l++)
for(int i=1;i+l<=n;i++)
{
int j=i+l;
for(int k=i;k<j;k++)
M[i][j]=min(M[i][j], M[i][k] + M[k+1][j] + vector[i-1]*vector[k]*vector[j]);
}
}
void print()
{
ofstream g("podm.out");
g<<M[1][n];
g.close();
}
};
int main()
{
Paranthesis P;
P.read();
P.problem();
P.print();
}