链接:https://ac.nowcoder.com/acm/contest/11471/I
来源:牛客网
这一天cg写了一个卡迪亚酒店客户端,客户端的数据是一张由用户名s,密码m,性别x,电话h组成的表,他想以用户的用户名为基准进行一下排序,短的在前,同样长度按照字典序小的在前,同用户名先输入的在前面。但是曹哥太忙了所以找你帮忙写一下数据处理。
题解:排个序就行了。
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
struct node{
string s,m,x,h;
int pos;
}a[N];
int n;
bool cmp(node a,node b){
if(a.s.size()==b.s.size()){
return a.s==b.s?a.pos<b.pos:a.s<b.s;
}else{
return a.s.size()<b.s.size();
}
}
int main(){
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].s>>a[i].m>>a[i].x>>a[i].h;
a[i].pos=i;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].s<<" "<<a[i].m<<" "<<a[i].x<<" "<<a[i].h<<endl;
}
return 0;
}