开门人和关门人

开门人和关门人题目描述 每天第一个到机房的人要把门打开 最后一个离开的人要把门关好 现有一堆杂乱的机房签到 签离记录 请根据记录找出当天开门和关门的人 输入描述 每天的记录在第一行给出记录的条目数 M M gt 0 下面是 M 行 每行的格式为 证件号码 签到时间 签离时间 其中时间按 小时 分钟 秒钟

大家好,我是讯享网,很高兴认识大家。

输入描述:
每天的记录在第一行给出记录的条目数M (M > 0 ),下面是M行,每行的格式为
证件号码 签到时间 签离时间
其中时间按“小时:分钟:秒钟”(各占2位)给出,证件号码是长度不超过15的字符串。

输出描述:
对每一天的记录输出1行,即当天开门和关门人的证件号码,中间用1空格分隔。
注意:在裁判的标准测试输入中,所有记录保证完整,每个人的签到时间在签离时间之前,且没有多人同时签到或者签离的情况。


讯享网

示例1
输入
3
CS 15:30:28 17:00:10
SC 08:00:00 11:25:25
CS 21:45:00 21:58:40
输出
SC CS

题目解析:两次排序就可以得到答案,因为时间格式是规范的,所以直接用字符串就可以排序,不用逐步解析出时分秒

代码:

#include<stdio.h> #include<math.h> #include<algorithm> #include<string.h> #include<iostream> #include<iomanip> #include<vector> #include<map> #include<set> #include<stack> #include<queue> using namespace std; const int N = 10000; //用char数组  typedef struct{ 
    string id; char start[10]; char end[10]; }Record; bool cmp1(Record r1,Record r2){ 
    if(strcmp(r1.start,r2.start) < 0){ 
    return false; }else{ 
    return true; } } bool cmp2(Record r1,Record r2){ 
    if(strcmp(r1.end,r2.end) < 0){ 
    return false; }else{ 
    return true; } } //很简单,比较开始和结束时间就可以了  int main() { 
    int n; Record record[N]; while(cin >> n){ 
    for(int i = 0; i < n ; i++){ 
    cin >> record[i].id >> record[i].start >> record[i].end ; } sort(record , record + n , cmp1); string startid = record[n-1].id; sort(record , record + n , cmp2); string endid = record[0].id; cout << startid << " " << endid << endl; } return 0; } /* 用string字符串,可以直接比较,因为给的比较规范,所以不用担心出现 8>12 的情况 #include<stdio.h> #include<math.h> #include<algorithm> #include<string.h> #include<iostream> #include<iomanip> #include<vector> #include<map> #include<set> #include<stack> #include<queue> using namespace std; const int N = 1000; typedef struct{ string id; string open , close; }People; People pp[N]; bool cmp1(People p1, People p2){ return p1.open < p2.open; } bool cmp2(People p1, People p2){ return p1.close > p2.close; } int main() { int n ; while(cin >> n){ for(int i = 0 ; i < n ; i++){ cin >> pp[i].id >> pp[i].open >> pp[i].close; } sort(pp , pp+n , cmp1); cout << pp[0].id << " "; sort(pp , pp+n , cmp2); cout << pp[0].id << endl; } return 0; } */ 

讯享网
小讯
上一篇 2025-01-16 15:53
下一篇 2025-04-05 12:50

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/38608.html