08:病人排队

08:病人排队

总时间限制: 
1000ms

内存限制: 
65536kB
描述

病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序: 
1. 老年人(年龄 >= 60岁)比非老年人优先看病。 
2. 老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。 
3. 非老年人按登记的先后顺序看病。

输入
第1行,输入一个小于100的正整数,表示病人的个数;
后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:一个长度小于10的字符串表示病人的ID(每个病人的ID各不相同且只含数字和字母),一个整数表示病人的年龄,中间用单个空格隔开。
输出
按排好的看病顺序输出病人的ID,每行一个。
样例输入
5
021075 40
004003 15
010158 67
021033 75
102012 30
样例输出
021033
010158
021075
004003
102012
来源
习题(14-6)

#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
using namespace std;
struct man
{
    int i;
    string e;
    int s;
};
int n;
man a[101];
int main()
{
    int i,j;
    cin>>n;
    for(i=1; i<=n; i++)
    {
        a[i].i=i;
        cin>>a[i].e>>a[i].s;
    }
    for(i=1; i<=n-1; i++)
    {
        for(j=i+1; j<=n; j++)
            if(a[j].s>=60&&a[i].s<60)
                swap(a[i],a[j]);
            else if(a[j].s>=60&&a[i].s>=60&&a[j].s>a[i].s)
                swap(a[i],a[j]);
            else if(a[j].s>=60&&a[i].s>=60&&a[j].s==a[i].s&&a[j].i<a[i].i)
                swap(a[i],a[j]);
            else if(a[j].s<60&&a[i].s<60&&a[j].i<a[i].i)
                swap(a[i],a[j]);
    }
    for(i=1; i<=n; i++)
        cout<<a[i].e<<endl;
    return 0;
}

时间: 2024-10-01 21:17:18

08:病人排队的相关文章

简单排序-病人排队

总时间限制: 1000ms 内存限制: 65536kB 描述 病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序: 1. 老年人(年龄 >= 60岁)比非老年人优先看病. 2. 老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序. 3. 非老年人按登记的先后顺序看病. 输入 第1行,输入一个小于100的正整数,表示病人的个数:后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:一个长度小于10的字符串表示病人的ID(每个病人的ID各不相同且只含数字和字母),

整理小朋友在noi.openjudge上的作业(1)

NOI(题库正在建设中,做题纪录有可能会被删除,请注意) 第一章的统计放前面 1 编程基础之输入输出 10 0 0% 最基础有空补刷 2 编程基础之变量定义.赋值及转换 10 0 0% 最基础有空补刷 3 编程基础之算术表达式与顺序执行 20 0 0% 最基础有空补刷 4 编程基础之逻辑表达式与条件分支 21 0 0% 最基础有空补刷 5 编程基础之循环控制 45 10 22% 最基础有空补刷 6 编程基础之一维数组 15 5 33% 最基础有空补刷 7 编程基础之字符串 35 0 0% 有必要

数据结构实践——排队看病模拟(队列)

本文是针对数据结构基础系列网络课程(3):栈和队列的实践项目. [项目 - 排队看病模拟] 编写一个程序,反映病人到医院看病,排队看医生的情况.在病人排队过程中,主要重复两件事: (1)病人到达诊室,将病历本交给护士,排到等待队列中候诊. (2)护士从等待队列中取出下一位病人的病历,该病人进入诊室就诊. 要求模拟病人等待就诊这一过程.程序采用菜单方式,其选项及功能说明如下: (1)排队--输入排队病人的病历号,加入到病人排队队列中. (2)就诊--病人排队队列中最前面的病人就诊,并将其从队列中删

hdu 1873 看病要排队(优先级队列)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1873 题目大意: 三个医生看病,病人排队看病,病人有优先级,优先级高的提前看病,同样的优先级按先后.IN A B : A医生有B病人.OUT  A:A医生看完病人.输入看完病的病人是第几个来的.如果当前的医生没有看病人,输出“EMPYT”. 解题思路: 三个医生队列(优先队列:可以自动排序,解决了优先级问题),定义一个病人结构体,记录病人的顺序 key 和优先级priority,如果当前病人看1号医

NOIP 11.01 应试记录

快排代码 void quicksort(int left,int right) { int u,j,t,temp; if(letf>right) return; temp=a[left]; i=left; j=right; while(i!=j) { while(a[j]>=temp && i<j) j--; while(a[i]<=temp && i<j) i++; if(i<j) { t=a[i]; a[i]=a[j]; a[j]=t

数据结构实践项目——队列

本组项目针对<数据结构基础系列(3):线性表>中的7-12课: 7.队列的定义 8. 顺序队的存储及基本操作 9. 环形队列的存储及基本操作 10. 队列的链式存储结构及其基本运算的实现 11. 队列的应用-迷宫问题 12. 双端队列 [项目1 - 建立顺序环形队列算法库] 定义顺序环形队列存储结构,实现其基本运算,并完成测试. 要求: 1.头文件sqqueue.h中定义数据结构并声明用于完成基本运算的函数.对应基本运算的函数包括: void InitQueue(SqQueue *&q

Java多线程学习笔记——从Java JVM对多线程数据同步的一些理解

   我们知道在多线程编程中,我们很大的一部分内容是为了解决线程间的资源同步问题和线程间共同协作解决问题.线程间的同步,通俗我们理解为僧多粥少,在粥有限情况下,我们怎么去防止大家有秩序的喝到粥,不至于哄抢都没得喝.线程讲协作,我们可以理解为我们在医院看病的时候,我们要先挂号,才能看病.现在医院有很多病人排队,怎么协调病人都有秩序的先挂号,后看病.本篇文章的重点不在此,也不是在此一下子能分析完,我们先从Java JVM的角度来理解多线程的一些方面. 我们知道多线程间的数据同步,我们是通过加锁的操作

hibernate5(15)注解映射[7]集合关联

集合注解映射 集合关系映射可以看成是一对多关系映射的一种简化,在一个电商系统里,出售的产品可能会有多张展示图片,如果我们使用一对多来建立关联映射时,需要创建一个实体类Images,里面可能有属性:图片在服务器的访问路径url和图片所属产品productId.但如果我们使用集合关系映射,则无需新建一个实体类,只需在Product中定义一个集合成员属性即可. Set集合 在产品中,我们的图片路径一般是不会相同的,我们可以使用Set集合来建立映射 我们下面来看这一需求的配置示例: @Entity @T

医院门诊管理系统

题目给了实现框架只需要实现几个API函数即可,这里记录下源代码.利用C的系统函数提取字符串,这一点在平时使用的较少,可以作为demo借鉴. //不警告不安全函数 #define _CRT_SECURE_NO_WARNINGS #include "stdio.h" #include "string.h" #include "malloc.h" #include "stdlib.h" #ifdef __cplusplus exte