1 条题解
-
0
/* 病人排队 编写一个程序,将登记的病人按照以下原则 排出看病的先后顺序: 1.老年人(年龄>=60)比非老年人优先看病。 2.老年人按年龄从大到小的顺序看病, 年龄相同的按登记的先后顺序排序。 3.非老年人按登记的先后顺序看病。 输入格式: 第一行为一个正整数n(n<=100), 表示病人的个数,后面按照病人登记的先后顺序, 每行输入一个病人的信息,包 括:病人的ID(每个病人的ID各不相同且只含数字和字母),一个整数表示病人的年龄。 输出格式 按排好的看病顺序输出病人的ID,每行一个。 */ #include<iostream> #include<algorithm> using namespace std; struct patient{ string id; int order; int age; }p[101]; bool cmp(patient a,patient b){ if(a.age<60&&b.age<60) return a.order<b.order; else if(a.age>=60&&b.age>=60){ if(a.age==b.age) return a.order<b.order; else return a.age>b.age; } else return a.age>b.age; } int main(){ int n; cin>>n; for(int i=1;i<=n;++i){ cin>>p[i].id>>p[i].age; p[i].order=i; } sort(p+1,p+n+1,cmp); for(int i=1;i<=n;++i){ cout<<p[i].id<<endl; } return 0; }
- 1
信息
- ID
- 308
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 7
- 已通过
- 2
- 上传者