#include <bits/stdc++.h> #include <sstream> using namespace std; int idx=0; struct d { string name; string start_time; string last_time; }; //两个冒泡排序,保证稳定性 void sortbystart(d rizhi[]) { for(int i=1;i<idx;i++) { for(int j=0;j<idx-i;j++) { if(rizhi[j].start_time>rizhi[j+1].start_time) { swap(rizhi[j],rizhi[j+1]); } } } } void sortbyconsume(d rizhi[]) { for(int i=1;i<idx;i++) { for(int j=0;j<idx-i;j++) { if(rizhi[j].last_time>rizhi[j+1].last_time) { swap(rizhi[j],rizhi[j+1]); } } } } int main() { string s; d rizhi[100000]; while(getline(cin,s)) { rizhi[idx].name=s; stringstream ss(s); string n,t1,t2,l,t; int index=0; while(ss>>t) { if(index==1) t1=t;//年月日 if(index==2) t2=t;//时分秒毫秒 if(index==3) l=t;//消耗时间 index++; } // rizhi[idx].start_time=t1+t2; rizhi[idx].last_time=l; idx++; } //处理一下消耗时间 int maxs=0; for(int i=0;i<idx;i++) { if(maxs<rizhi[i].last_time.length()) { maxs=rizhi[i].last_time.length(); } } //缺的补零 //比如字符串91.11直接和字符串211.22比肯定是后者小,我们在短的前面补充合适的数量的0即可 for(int i=0;i<idx;i++) { if(rizhi[i].last_time.length()<maxs) { rizhi[i].last_time.insert(0,maxs-rizhi[i].last_time.length(),'0'); } } //开始排序 //先根据开始时间排序 sortbystart(rizhi); sortbyconsume(rizhi); for(int i=0;i<idx;i++) { cout<<rizhi[i].name<<endl; } } // 64 位输出请用 printf("%lld")