站外题求调
  • 板块学术版
  • 楼主Show_me
  • 当前回复4
  • 已保存回复4
  • 发布时间2025/1/19 19:24
  • 上次更新2025/1/19 21:59:57
查看原帖
站外题求调
1244810
Show_me楼主2025/1/19 19:24

病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序:

  1. 老年人(年龄 >= 60岁)比非老年人优先看病。
  2. 老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。
  3. 非老年人按登记的先后顺序看病。

第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;
}
2025/1/19 19:24
加载中...