信息学奥赛一本通-编程启蒙(C++版)在线评测系统
3436:【例76.1】 病人排队
解题思路
- 数据结构选择:定义一个结构体来存储病人的信息,包括病人ID和年龄。使用两个容器,一个用于存储老年人信息,另一个用于存储非老年人信息。
- 信息录入:从输入读取每个病人的ID和年龄,根据年龄判断该病人是老年人还是非老年人,并将其信息分别存储到对应的容器中。
- 排序操作:对于存储老年人信息的容器,按照年龄从大到小排序,如果年龄相同,则按照登记顺序(即输入顺序)排序。对于存储非老年人信息的容器,由于他们按登记顺序看病,所以无需额外排序。
- 输出结果:先输出老年人的ID,再输出非老年人的ID,从而得到整个看病顺序。
C++代码实现
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 定义病人结构体
struct Patient {
string id;
int age;
int order; // 用于记录登记顺序
}