#include #include #include #include #include //#include using std::vector; using std::string; bool compare_leading_digits(string s1, string s2) { return stoi(s1 + s2) > stoi(s2 + s1); } static string largest_number(vector a) { string result = ""; string maxDigit = "0"; int indexHolder = 0; while (a.size() > 0){ for (int i = 0; i< a.size(); i++) { if (compare_leading_digits(a[i], maxDigit)) { maxDigit = a[i]; indexHolder = i; } } result = result + maxDigit; maxDigit = "0"; a.erase(a.begin()+indexHolder); } return result; } //TEST(CompareLeadingDigits, CompareTest1) { // ASSERT_TRUE(compare_leading_digits("2", "21")); //} // //TEST(CompareLeadingDigits, CompareTest2) { // ASSERT_FALSE(compare_leading_digits("20", "21")); //} // //TEST(CompareLeadingDigits, CompareTest3) { // ASSERT_FALSE(compare_leading_digits("321", "322")); //} // //TEST(CompareLeadingDigits, CompareTest4) { // ASSERT_FALSE(compare_leading_digits("321", "32")); //} // //TEST(CompareLeadingDigits, CompareTest5) { // ASSERT_FALSE(compare_leading_digits("10", "1")); //} // //TEST(CompareLeadingDigits, CompareTest6) { // ASSERT_TRUE(compare_leading_digits("6", "10")); //} // //TEST(CompareLeadingDigits, CompareTest7) { // ASSERT_TRUE(compare_leading_digits("23", "2")); //} // //TEST(CompareLeadingDigits, CompareTest8) { // ASSERT_TRUE(compare_leading_digits("545", "54")); //} // //TEST(CompareLeadingDigits, CompareTest9) { // ASSERT_TRUE(compare_leading_digits("56", "565")); //} // //TEST(LargestNumber, LargestTest1) { // vector nums = {"9", "4", "6", "1", "9"}; // ASSERT_EQ("99641", largest_number(nums)); //} // //TEST(LargestNumber, LargestTest2) { // vector nums = {"21", "2"}; // ASSERT_EQ("221", largest_number(nums)); //} int main() { int n; std::cin >> n; vector a(n); for (size_t i = 0; i < a.size(); i++) { std::cin >> a[i]; } std::cout << largest_number(a); }