Pagini recente » Cod sursa (job #1718951) | Cod sursa (job #176375) | Cod sursa (job #2784568) | Cod sursa (job #1892989) | Cod sursa (job #1458076)
#include <fstream>
#include <vector>
#include <limits>
#include <utility>
using namespace std;
using ll = long long;
constexpr ll inf = numeric_limits<ll>::max();
int main(){
ifstream f("podm.in");
ofstream g("podm.out");
int n = 0;
f >> n;
vector<ll> v(n+1);
for(auto& x : v){
f >> x; }
vector<vector<ll> > d(n, vector<ll>(n, inf));
for(int i = 0; i < n; ++i){
d[i][i] = 0; }
for(int i = 0; i+1 < n; ++i){
d[i][i+1] = v[i] * v[i+1] * v[i+2]; }
for(int delta = 3; delta <= n; ++delta){
for(int st = 0, dr = delta-1; dr < n; ++st, ++dr){
for(int mij = st; mij < dr; ++mij){
d[st][dr] = min(d[st][dr],
d[st][mij] + d[mij+1][dr] +
v[st] * v[mij+1] * v[dr+1]); } } }
g << d[0][n-1] << '\n';
return 0; }