Pagini recente » Cod sursa (job #2059132) | Istoria paginii runda/oni2009x1/clasament | Cod sursa (job #2313667) | cercetatori | Cod sursa (job #2740490)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("podm.in");
ofstream fout("podm.out");
// constanta modulo folosita in aceasta problema
#define MOD ((int)1e9 + 7)
const auto INF = std::numeric_limits<unsigned long long>::max();
unsigned long long solve_podm(int n, vector<int> &d){
vector<vector<unsigned long long>> dp(n+1,vector<unsigned long long > (n+1,INF));
for(int i = 1; i <= n; i++){
dp[i][i] = 0ULL; // 0 pe unsigned long
}
for(int i = 1 ; i < n;i++){
dp[i][i+1] = 1ULL * d[i-1] * d[i] * d[i+1];
}
for(int len = 2; len <= n; ++len){
for(int i = 1 ;i + len - 1 <= n; i++){
int j = i + len - 1;
for(int k = i ; k < j ;k++){
unsigned long long sol = dp[i][k] + dp[k+1][j] + 1ULL * d[i-1]*d[k]*d[j];
dp[i][j] = min(sol,dp[i][j]);
}
}
}
return dp[1][n];
}
int main(){
unsigned long long n;
std::vector<int> d[502];
fin>>n;
for(int i = 0; i <= n;i++){
int x;
fin>>x;
d->push_back(x);
}
fout<<solve_podm(n,*d)<<'\n';
return 0;
}