链接:
https://www.nowcoder.com/acm/contest/83/B
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<string> #include<cmath> #define ll long long using namespace std; void dis(char a[], int n){ printf("总数为%d个\n",n); for(int i = 0; i < n; i++) cout<<a[i]; cout<<endl<<"------------------"<<endl; } const int mx = 2e5+10; struct no{ //char na[20]; string sc,s1; char na[30]; }stu[mx]; bool cmp(no &a, no&b){ // 这两个引用符号没有加就会超时 if(a.s1 > b.s1) return true; else if(a.s1 < b.s1) return false; if( strcmp(a.na, b.na) < 0) return true; return false; } //char na[20]; int n; int main(){ int n,te; scanf("%d",&n); for(int i = 0; i <n; i++){ cin>>stu[i].na>>stu[i].sc; te = stu[i].sc.length(); //te -= 1; while(1){ if(stu[i].sc[--te] != '0') // 0 没加引号 break; //cout<<"ci"<<endl; } te++; stu[i].s1= stu[i].sc.substr(0,te); } sort(stu,stu+n,cmp); for(int i = 0; i <n; i++){ cout<<stu[i].na<<" "<<stu[i].sc<<endl; //dis(stu[i].sc,stu[i].ls); } return 0; }