题解 | #开门人和关门人#

开门人和关门人

https://www.nowcoder.com/practice/a4b37b53a44d454ab0834e1517983215

#include <cstdlib>
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
#include <map>
#include "queue"
#include "cstring"

typedef pair<string,string> PII;  
priority_queue<PII,vector<PII>,greater<PII>> open;  //小根堆找最早签到
priority_queue<PII> close; // 大根堆 找 最晚签到的人
int n;
int main() {
    cin >> n;
    while(n--){
        string id,optime,cltime;
        cin >> id >> optime >> cltime;
        optime.erase(2,1);
        optime.erase(4,1);
        cltime.erase(2,1);
        cltime.erase(4,1);
        
        open.push(PII{optime,id});
        close.push(PII{cltime,id});
    }
    string ido=open.top().second;
    string clo=close.top().second;
    cout << ido <<' '<<clo <<endl ;


}
// 64 位输出请用 printf("%lld")

一开始 没好好看题 , 以为中间 没人 的时候 也要关门 想了半天

再一看 原来 是 每天第一个到开门 , 最后一个才关门 不用管 中间情况

那就直接用两个 堆存 开门时间和 关门时间就可以了 一个小根堆 一个大根堆

注 : 堆默认 排序 字符串 的字典序 排

所以时间 就按字符串存 就可以 ,其实 erase 这两句也不用写

全部评论

相关推荐

想干测开的tomca...:这份简历是“大一新生硬凹资深后端”的典型反面教材,槽点离谱到能让面试官直接笑出声: ### 1. 「年龄+入学时间」和项目复杂度完全脱节,可信度直接归0 你2024年7月才入学(现在刚读了1年多),19岁的大一新生,能把Vue3+Spring Boot+ShardingSphere+K8s+AI这些技术全塞进两个项目里?别说实际开发,光把这些技术的文档看完都得半年——这不是“能力强”,是“把招聘JD里的技术词全抄过来造假”,明摆着没碰过实际代码
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务