7-6 p075病人排队
病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序:
老年人(年龄 >= 60岁)比非老年人优先看病。
老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。
非老年人按登记的先后顺序看病。
输入格式:
第1行,输入一个小于100的正整数,表示病人的个数;
后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:
一个长度小于10的字符串表示病人的ID(每个病人的ID各不相同且只含数字和字母),一个整数表示病人的年龄,中间用单个空格隔开。
输出格式:
按排好的看病顺序输出病人的ID,每行一个。
输入样例:
5
021075 40
004003 15
010158 67
021033 75
102012 30
输出样例:
021033
010158
021075
004003
102012
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
# 对一维数组进行排序()年龄数组
def fetch_bigger_60(target_arr):
# 创建空数组,用来存放返回分开之后的数组
res = []
# 大于60的数组
new_arr_bigger = []
# 小于60的数组
new_arr_younger = []
for item in target_arr:
if item >= 60 :
new_arr_bigger.append(item)
else:
new_arr_younger.append(item)
# res[0] 为60岁以及以上的人的信息
res.append(new_arr_bigger)
# res[1] 为60岁以下的人的信息
res.append(new_arr_younger)
return res
# # 将输入的二维数组转化为字典,
# def to_dict(target_arr):
# new_dict = {}
# for item in target_arr:
# new_dict[item[1]] = item[0]
# return new_dict
# 并将年龄数组提取出来-同时将年龄转化为整数-方便后续的排序
def get_age_arr(target_arr):
new_arr = []
for item in target_arr:
new_arr.append(int(item[1]))
return new_arr
# # 并将年龄数组提取出来-同时将年龄转化为整数-方便后续的排序
# def get_num_arr(target_arr):
# new_arr = []
# for item in target_arr:
# new_arr.append((item[0]))
# return new_arr
# 存放输入的二维数组
in_arr = []
num_of_person = int(input())
num = 1
while num <=num_of_person:
# 接收每行的数据并存入列表中
row =input().split()
in_arr.append(row)
num += 1
# 得到年龄列表
age_arr = get_age_arr(in_arr)
# 开始处理数据
elder_arr = fetch_bigger_60(age_arr)[0]
younger_arr = fetch_bigger_60(age_arr)[1]
# 降序排列
elder_arr.sort(reverse=True)
# 数组拼接
res_arr = elder_arr+younger_arr
for item in res_arr:
for index in range(len(in_arr)):
# 若结果数组中的年龄和输入二位列表中的元素的年龄相等,则输出其编号并将该患者的编号和年龄均置0
if str(item) == in_arr[index][1]:
print(in_arr[index][0])
in_arr[index] = ['0','0']
break