#include
#include
#include
using namespace std;
int N;
struct num {
int sum=0;
num* next[10] = { nullptr,nullptr,nullptr,nullptr,nullptr,nullptr,nullptr,nullptr,nullptr,nullptr };
int end = 0;
};
num* nums = new num;
list
res;
int getmin() {
int res = 0;
while (nums->next[res] == nullptr || nums->next[res]->sum <= 0) res++;
return res;
}
int main() {
cin >> N;
getchar();
for (int i = 0; i < N; i++)
{
int j = 0;
char c;
num* temp = nums;
while ((c = getchar())!=' ' && c!='\n') {
if (temp->next[c - '0'] == nullptr) temp->next[c - '0'] = new num;
temp->next[c - '0']->sum++;
temp = temp->next[c - '0'];
}
temp->end++;
}
num* temp = nums;
nums->sum = N+1;
while (nums->sum > 0) {
temp->sum--;
int i = 0;
while (temp->next[i] == nullptr || temp->next[i]->sum <= 0) {
i++;
if (i==10) break;
}
if (temp->end != 0 && i != 10) {
if (i > getmin()) {
temp->end--;
temp = nums;
}
else {
res.push_back(i);
temp = temp->next[i];
}
}
else if (temp->end != 0) {
temp->end--;
temp = nums;
}
else if (i != 10) {
res.push_back(i);
temp = temp->next[i];
}
}
while (!res.empty() && res.front() == 0) res.pop_front();
if (res.empty()) cout << 0;
for (auto it : res) cout << it;
system("PAUSE");
return 0;
}
PAT 1038
最新推荐文章于 2021-05-28 18:43:34 发布