Pagini recente » Cod sursa (job #919468) | Cod sursa (job #1924460) | Cod sursa (job #2334082) | Cod sursa (job #3126841) | Cod sursa (job #2001976)
#include <cstdio>
#include <vector>
#include <numeric>
using namespace std;
#define NAME "scmax"
auto fin = fopen(NAME ".in", "r");
auto fout = fopen(NAME ".out", "w");
int n;
vector<int> v;
vector<int> solution;
vector<int> current;
void find(int level, int start_i) {
auto solution_sum = accumulate(solution.begin(), solution.end(), 0);
auto current_sum = accumulate(current.begin(), current.end(), 0);
if (current_sum > solution_sum)
solution = current;
for (auto i = start_i; i < n; ++i) {
if (!current.size() || v[i] > current.back()) {
current.push_back(v[i]);
find(level + 1, i + 1);
current.pop_back();
}
}
}
int main() {
fscanf(fin, "%d", &n);
v.resize(n);
for (auto i = 0; i < n; ++i)
fscanf(fin, "%d", &v[i]);
find(0, 0);
for (auto val: solution)
printf("%d ", val);
printf("\n");
return 0;
}