代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef struct people {
ll x;
ll y;
char s[30];
//string s;
} peo;
bool check(string a,string b) {
int la=0,lb=0;
while(la<a.size()&&lb<b.size()) {
if(a[la]!=b[lb]) {
return a[la]<b[lb];
}
la++,lb++;
}
return a.size()<b.size();
}
bool cmp(peo* a,peo* b) {
if(a->y!=b->y)return a->y>b->y;
if(a->x!=b->x)return a->x>b->x;
return check(a->s,b->s);
}
int main() {
int n;
cin>>n;
vector<peo*> temp;
for(int i=0; i<n; i++) {
peo *p=new peo;
scanf("%lld %lld %s",&p->x,&p->y,p->s);
//cin>>p->x>>p->y>>p->s;
temp.push_back(p);
}
sort(temp.begin(),temp.end(),cmp);
for(int i=0; i<n; i++) {
printf("%lld %lld %s\n",temp[i]->x,temp[i]->y,temp[i]->s);
//cout<<temp[i]->x<<" "<<temp[i]->y<<" "<<temp[i]->s<<endl;
}
return 0;
}