Cod sursa(job #2001976)

Utilizator dan.marculetFII MarculetDan dan.marculet Data 18 iulie 2017 12:22:58
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#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;
}