代码:
# include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10, M = 1e4 + 10;
int n;
struct longnum{
string id;
int l, d[M];
longnum(){}
longnum(string a){
l = a.size();
for(int i = 1; i <= l; i ++) d[i] = a[l - i] - '0';
}
friend ostream& operator << (ostream &out, longnum a){
out << a.id;
return out;
}
friend istream& operator >> (istream &in, longnum &a){
string s;
in >> s;
a = s;
return in;
}
}q[N];
bool cmp(longnum a, longnum b){
if(a.l != b.l) return a.l > b.l;
for(int i = a.l; i >= 1; i --)
if(a.d[i] != b.d[i]) return a.d[i] > b.d[i];
int la = a.id.size();
int lb = b.id.size();
for(int i = 0; i < min(la, lb); i ++)
if(a.id[i] != b.id[i]) return a.id[i] < b.id[i];
return la > lb;
}
int main(){
scanf("%d", &n);
for(int i = 1; i <= n; i ++){
cin >> q[i].id;
cin >> q[i];
}
sort(q + 1, q + 1 + n, cmp);
for(int i = 1; i <= n; i ++){
cout << q[i];
printf("\n");
}
return 0;
}