Pagini recente » Cod sursa (job #77069) | Cod sursa (job #392369) | Cod sursa (job #425218) | Cod sursa (job #466640) | Cod sursa (job #384583)
Cod sursa(job #384583)
/*
* File: main.cpp
* Author: virtualdemon
*
* Created on January 20, 2010, 2:02 PM
*/
#include <vector>
#include <fstream>
#include <iterator>
/*
*
*/
using namespace std;
typedef unsigned int u;
typedef unsigned long long llu;
llu M[510][510];
const llu inf=(llu)1152921504606846976;
vector<u> d;
inline llu min( llu x, llu y )
{
return y^( (x^y) & -(x<y) );
}
int main()
{u n, i, j, k;
ifstream in("podm.in");
in>>n;
copy( istream_iterator<u>(in), istream_iterator<u>(), back_inserter(d) );
for( i=n-1; i > 0; --i )
{
M[i][i+1]=(llu)d[i-1]*d[i]*d[i+1];
for( j=i+2; j <= n; ++j )
{
M[i][j]=inf;
for( k=i; k < j; ++k )
M[i][j]=min( M[i][j], M[i][k]+M[k+1][j]+(llu)d[i-1]*d[k]*d[j] );
}
}
ofstream out("podm.out");
out<<M[1][n];
return 0;
}