vector p[]数组进行排序
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
const int INF = 0x3f3f3f;
typedef long long LL;
typedef pair<int, int> PII;
#define xx first
#define yy second
vector<int> p[25];
int n, x,a[25];
struct node
{
// bool operator<(const node &a) const
// {
// }
};
void ClearFloat()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
}
bool cmp(vector<int> &a, vector<int> &b)
{
int q = min(a.size(), b.size());
for (int i = 0; i < q; i++)
{
if(a[i]==b[i])
continue;
else return a[i]>b[i];
}
if(a.size()>b.size())
return a[q]<a[0];
return b[q]<b[0];
}
int main()
{
ClearFloat();
cin >> n;
for (int i = 1; i <= n; i++)
{
int l=0;
cin >> x;
while (x)
{
a[++l]=x%10;
x /= 10;
}
for(int j=l;j>=1;j--)
{
p[i].push_back(a[j]);
}
}
sort(p + 1, p + 1 + n, cmp);
for (int i = 1; i <= n; i++)
{
for (int j = 0; j < p[i].size(); j++)
cout << p[i][j];
}
}