Advanced Level 1006 Sign In and Sign Out (25 point(s))

2023-11-14

题目

At the beginning of every day, the first person who signs in the computer room will unlock the door, and the last one who signs out will lock the door. Given the records of signing in’s and out’s, you are supposed to find the ones who have unlocked and locked the door on that day.

Input Specification::

Each input file contains one test case. Each case contains the records for one day. The case starts with a positive integer M, which is the total number of records, followed by M lines, each in the format:

ID_number Sign_in_time Sign_out_time

where times are given in the format HH:MM:SS, and ID_number is a string with no more than 15 characters.

Output Specification:

For each test case, output in one line the ID numbers of the persons who have unlocked and locked the door on that day. The two ID numbers must be separated by one space.

Note: It is guaranteed that the records are consistent. That is, the sign in time must be earlier than the sign out time for each person, and there are no two persons sign in or out at the same moment.

Sample Input:

3
CS301111 15:30:28 17:00:10
SC3021234 08:00:00 11:25:25
CS301133 21:45:00 21:58:40

Sample Output:

SC3021234 CS301133

思路分析:

利用结构体排序然后取出最早和最晚的即可。

代码:

#include <iostream>
#include <algorithm>

using namespace std;

const int MAXN = 11;
struct student{
    string ID_number, Sign_in_time, Sign_out_time;
}stu[MAXN];

bool cmp_1(student a, student b){
    if(a.Sign_in_time != b.Sign_in_time) return a.Sign_in_time < b.Sign_in_time;
}

bool cmp_2(student a, student b){
    if(a.Sign_out_time != b.Sign_out_time) return a.Sign_out_time > b.Sign_out_time;
}

int main(){
    int m;
    cin >> m;
    for(int i = 0; i < m; i++) cin >> stu[i].ID_number >> stu[i].Sign_in_time >> stu[i].Sign_out_time;
    sort(stu, stu + m, cmp_1);
    cout << stu[0].ID_number << " ";
    sort(stu, stu + m, cmp_2);
    cout << stu[0].ID_number << endl;
    return 0;
}

PAT_Advanced_Level

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Advanced Level 1006 Sign In and Sign Out (25 point(s)) 的相关文章

  • Java 中的扫描器类

    Java Scanner 类是 java util 包的一部分 它是在 Java 1 5 版本中引入的 Scanner 主要用于接收用户输入并将其解析为原始数据类型 例如 int double 或默认 String 它是一个实用程序类 通过
  • Java equals() 和 hashCode()

    Java equals 和 hashCode 方法存在于 Object 类中 所以每个java类都有equals 和hashCode 的默认实现 在这篇文章中 我们将详细研究 java equals 和 hashCode 方法 Java 等

随机推荐

  • 如何在 Ubuntu 18.04 上设置时间同步

    介绍 准确的计时已成为现代软件部署的关键组成部分 无论是确保以正确的顺序记录日志还是正确应用数据库更新 时间不同步都可能导致错误 数据损坏和其他难以调试的问题 Ubuntu 18 04 内置了时间同步 并且默认使用 systemd 的 ti
  • Linux/UNIX 中的 ls 命令

    ls 命令是日常 Linux UNIX 操作中最常用的命令之一 该命令用于列出目录内的内容 是初学者从一开始就学习的少数命令之一 在本指南中 我们将讨论 Linux 中的常见 ls 命令以及可与该命令一起使用的其他参数 使用不带任何参数的
  • 使用 Kotlin 在活动之间进行 Android Intent 处理

    在本教程中 我们将讨论 Android Intents 并在我们的应用程序中使用 Kotlin 实现它们 你会学到什么 什么是意图 意图的类型 在活动之间使用意图 使用 Android Intent 发送数据 使用 Parcelable 和
  • 如何在 Rocky Linux 9 上为专用连接设置 Squid 代理

    介绍 代理服务器是缓存或混淆网络流量的有用方法 这意味着 通过将连接卸载到中介 可以从与表面不同的入站或出站地址提供 Web 请求服务 对于普通最终用户来说 这通常意味着允许您从与您自己的 IP 地址不同的 IP 地址发出 Web 请求 这
  • 如何在 MySQL 中导入和导出数据库以及重置 root 密码

    如何导入和导出数据库 Export 要导出数据库 请打开终端 确保您没有登录 MySQL 并输入 mysqldump u username p database name gt database name sql 您在命令中选择的数据库现在
  • 如何在 Python 中向列表添加元素

    介绍 在本教程中 我们将学习在 Python 中向列表添加元素的不同方法 在 Python 中 有四种方法可以将元素添加到列表中 append 将元素追加到列表末尾 insert 在给定索引之前插入元素 extend 通过附加可迭代对象中的
  • 如何使用 Celery 和 RabbitMQ 在 Ubuntu VPS 上对任务进行排队

    介绍 异步或非阻塞处理是一种将某些任务的执行与程序的主流程分开的方法 这为您提供了多种优势 包括允许面向用户的代码不间断地运行 消息传递是程序组件用来通信和交换信息的一种方法 它可以同步或异步实现 并且可以允许离散进程毫无问题地进行通信 对
  • STL之priority_queue

    priority queue是一个拥有价值观的queue 它允许加入新元素 移除旧元素 审视新元素值等功能 由于这是一个queue 所以只允许在底部加入元素 并从顶端取出元素 除此之外另无其他存取元素的途径 priority queue带有
  • JDK8 下载与安装教程,超简单版(Windows)

    大家好 我是大鹅 最近换了新电脑 要安装开发环境 趁这个机会出一个安装教程 希望可以帮助到有需要的人 下载JDK安装包 在个人的电脑上 我是比较喜欢使用zulu的JDK 不论是版本还是功能都非常齐全 各个系统都有对应版本 基于OpenJDK
  • 用Python制作日历简答代码

    代码如下 import calendar 输入指定的年月 yy int input 输入年份 mm int input 输入月份 显示月日历 print calendar month yy mm 显示年日历 print calendar p
  • 体验最近火爆的ChatGPT,真的被震惊到了

    前言 前几天OpenAI公布了ChatGPT算是火爆朋友圈 这个模型以对话方式进行交互 能够回答人们提出的问题 承认错误并拒绝一些不适当的请求 GIS宇宙也是看到了各种文章写着什么谷歌要亡 百度要亡 取代StackOverflow的话语 抱
  • LeetCode【567】 字符串的排列

    这里写自定义目录标题 LeetCode567 字符串的排列 LeetCode567 字符串的排列 题目描述 给定两个字符串 s1 和 s2 写一个函数来判断 s2 是否包含 s1 的排列 换句话说 第一个字符串的排列之一是第二个字符串的子串
  • PROFIBUS DP从站开发 VPC3源程序分析---vpc3_cfg_data_update(void)

    以下程序注释由成都地质学院霸王猫添加 引用时请尊重作者劳动成果 标明引用者来自成都地质学院霸王猫 UBYTE vpc3 cfg data update void 入口参数 无 出口参数 无 返回值 VPC3 CFG FINISHED VPC
  • 可以悬浮在屏幕的搜题软件_给大家总结几款好用的搜题软件

    在学习中 难免会碰到不会做的题 一时想不开解题方法 这就需要搜题软件的帮助了 另外现在很多单位突击考试 让人来不得及准备 如果有好用的搜题软件 那么也能帮自己顺利通过考试 身心愉悦 搜题软件汇总 一 优题宝 优题宝是一款除k12考试之外 其
  • 如何查出同一张表中字段值重复的记录

    比如现在有一人员表 表名 peosons 若想将姓名 身份证号 住址这三个字段完全相同的记录查询出来 select p1 from persons p1 persons p2 where p1 idp2 id and p1 cardid p
  • RFID仓库管理解决方案-RFID智能仓储-RFID智能仓储-新导智能

    通过RFID技术可以实现科学有效的仓库库位管理 例如RFID出入库 RFID智能仓库等 实现仓库管理的信息化和时效化 在现代物流体系中 仓储往往起着平衡 调节 缓冲的作用 同时也是物流的中心环节 在现代化仓库的设计理念中 进出仓的效率将直接
  • 【Java项目实战】瑞吉外卖-06 套餐管理业务开发(包含修改套餐和单个/批量停售和启售方法)

    套餐管理业务开发 一 新增套餐 需求分析 套餐就是菜品的集合 后台系统中可以管理套餐信息 通过新增套餐功能来添加一个新的套餐 在添加套餐时需要选择当前套餐所属的套餐分类和包含的菜品 并且需要上传套餐对应的图片 在移动端会按照套餐分类来展示对
  • Vulkan同步机制和图形-计算-图形转换的风险(二)

    利用乒乓机制的交错队列减少风险 在本篇文章中 我们将提到Vulkan 图形处理过程中夹杂计算任务时遇到的各式问题 为更准确地了解我们的话题 可查看文章第一部分 第一部分概述了在Vulkan中如何使用barrier 具体来说 涉及图形 计算b
  • docker run后接多个COMMAND命令

    docker run后接多个COMMAND命令 格式 sh c run sh bin bash 例子 docker run dit name test sshd dockerfile sh c run sh bin bash 这样run起来
  • Advanced Level 1006 Sign In and Sign Out (25 point(s))

    题目 At the beginning of every day the first person who signs in the computer room will unlock the door and the last one w