773 auto names = vector<string>();
775 auto min_names = vector<string>();
776 auto max_names = vector<string>();
779 for(
int i = 0; i < n; i++) {
781 const auto *min_name_const_c_str = names[i].c_str();
782 const auto *max_name_const_c_str = names[i].c_str();
783 auto *min_name_c_str =
new char[names[i].length() + 1];
784 auto *max_name_c_str =
new char[names[i].length() + 1];
785 strcpy(min_name_c_str, min_name_const_c_str);
786 strcpy(max_name_c_str, max_name_const_c_str);
787 sort(min_name_c_str, min_name_c_str + names[i].length() *
sizeof(
char));
788 sort(max_name_c_str, max_name_c_str + names[i].length() *
sizeof(
char),
cmp);
789 const auto min_name = string(min_name_c_str);
790 const auto max_name = string(max_name_c_str);
791 min_names[i] = min_name;
792 max_names[i] = max_name;
793 delete[] min_name_c_str;
794 delete[] max_name_c_str;
796 auto min_names_sorted = vector(min_names);
797 auto max_names_sorted = vector(max_names);
798 sort(min_names_sorted.begin(), min_names_sorted.end());
799 sort(max_names_sorted.begin(), max_names_sorted.end());
800 for(
int i = 0; i < n; i++) {
801 auto min_name = min_names[i];
802 auto max_name = max_names[i];
803 cout << lower_bound(max_names_sorted.begin(), max_names_sorted.end(), min_name) - max_names_sorted.begin() +
806 << upper_bound(min_names_sorted.begin(), min_names_sorted.end(), max_name) - min_names_sorted.begin()
static bool cmp(char x, char y)