Files
exercises/pojcs101_T27373_biggest_combination_t2.cpp
T
2026-09-05 11:05:50 +08:00

60 lines
1.3 KiB
C++

#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
constexpr size_t MAX_M = 201, MAX_N = 1001;
vector<string> nums;
vector<bool> used;
map<size_t, int, greater<>> num_sizes;
string dp[MAX_M][MAX_N];
template <typename T>
void log_vector(const vector<T>& 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;
}