//不能直接用sort,因为sort排序不稳定,会改变原有纪录的顺序 #include <iostream> #include<algorithm> #include<vector> using namespace std; struct student { string name; int score; }; void Mysort(vector<student> &v,int flag) { int index; if(flag==0) { for(int i=0;i<v.size();i++) { index=0; for(int j=0;j<v.size()-1-i;j++) { if(v[j].score<v[j+1].score) { student s=v[j]; v[j]=v[j+1]; v[j+1]=s; index=1; } } if(index==0)return; } } else { for(int i=0;i<v.size();i++) { index=0; for(int j=0;j<v.size()-1-i;j++) { if(v[j].score>v[j+1].score) { student s=v[j]; v[j]=v[j+1]; v[j+1]=s; index=1; } } if(index==0)return; } } } int main() { vector<student>v; int n; int flag; while(cin>>n>>flag) { student s; for(int i=0;i<n;i++) { cin>>s.name; cin>>s.score; v.push_back(s); } Mysort(v,flag); for(int i=0;i<v.size();i++) { cout<<v[i].name<<" "<<v[i].score<<endl; } v.clear(); } return 0; } // 64 位输出请用 printf("%lld")