病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序:
第1行,输入一个小于100的正整数,表示病人的个数; 后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:一个长度小于10的字符串表示病人的ID(每个病人的ID各不相同且只含数字和字母),一个整数表示病人的年龄,中间用单个空格隔开。
按排好的看病顺序输出病人的ID,每行一个。
Sample Input 5 021075 40 004003 15 010158 67 021033 75 102012 30 Sample Output 021033 010158 021075 004003 102012
我的代码:
#include<bits/stdc++.h>
using namespace std;
struct s{
string id;
int age,idd;
}stu[105];
bool cmp(s x,s y){
if(x.age>=60 && y.age<60) return true;
if(x.age>=60 && y.age>=60){
if(x.age==y.age) return x.idd<y.idd;
return x.age>y.age;
}
if(x.age<60 && y.age<60) return x.idd<y.idd;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>stu[i].id>>stu[i].age;
stu[i].idd=i;
}
sort(stu+1,stu+1+n,cmp);
for(int i=1;i<=n;i++) cout<<stu[i].age<<'\n';
return 0;
}