Pagini recente » Cod sursa (job #987474) | Cod sursa (job #3128825) | Cod sursa (job #2776863) | Cod sursa (job #399067) | Cod sursa (job #1429519)
#include<iostream>
#include<algorithm>
#include<fstream>
#include<vector>
#include<limits>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
int N;
vector<pair<int, int>> m;
int d[1000][1000];
int podm()
{
for (int i = 0; i <= N + 1; i++) {
for (int j = 0; j <= N + 1; j++) {
d[i][j] = numeric_limits<int>::max() / 2;
}
}
for (int i = 1; i < N; i++) {
pair<int, int> m1, m2;
m1 = m[i - 1];
m2 = m[i];
d[i - 1][i] = m1.first * m1.second * m2.second;
}
for (int i = 0; i < N; i++) {
for (int j = 2; j < N; j++) {
pair<int, int> m1, m2, m3, m4;
if (i + j < N) {
m1 = m[i + j];
m2 = m[i];
m3 = m[i + j - 1];
m4 = m[i + 1];
d[i][i + j] = min(d[i][i + j - 1] + m2.first * m1.first * m1.second, d[i + 1][i + j] + m2.first * m2.second * m1.second);
}
}
}
return d[0][N - 1];
}
int main()
{
fin >> N;
int x, y;
fin >> x;
for (int i = 0;i < N; i++) {
fin >> y;
m.push_back(make_pair(x, y));
x = y;
}
fout << podm() << endl;
}