#include #include #include #include using namespace std; constexpr size_t MAX_M = 201, MAX_N = 1001; vector nums; vector used; map> num_sizes; string dp[MAX_M][MAX_N]; template void log_vector(const vector& vec, const string& prefix = "") { clog << prefix << endl; for (const T& item : vec) { clog << item << " "; } clog << endl; } void output_from_used() { for (int i = 0; i < nums.size(); i++) { if (used[i]) { cout << nums[i]; } } cout << endl; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int nums_amount, target_size; cin >> target_size >> nums_amount; nums.resize(nums_amount), used.resize(nums_amount); for (int i = 0; i < nums_amount; i++) { cin >> nums[i]; } sort(nums.begin(), nums.end(), [](const string& a, const string& b) { return a + b > b + a; }); for (const string& num : nums) { num_sizes[num.size()]++; } log_vector(nums, "nums: "); // while (!can_form_combination(target_size, target_size)) { // target_size--; // } clog << "target_size: " << target_size << endl; calc_used(target_size, target_size); log_vector(used, "used: "); output_from_used(); return 0; }