题解 | 开门人和关门人

#include <bits/stdc++.h>
#include <iostream>
using namespace std;

struct Time{
    string name;
    int hour;
    int minute;
    int second;
};

bool compare(Time a,Time b){
    if(a.hour==b.hour){
        if(a.minute==b.minute)return a.second<b.second;
        else return a.minute<b.minute;
    }else return a.hour<b.hour;
}

int main(){
    int n;
    while(cin>>n){
        Time ab[n],ae[n];
        for(int i=0;i<n;i++){
            string s;
            cin>>s;
            ab[i].name=s;
            ae[i].name=s;
            scanf("%d:%d:%d",&ab[i].hour,&ab[i].minute,&ab[i].second);
            scanf("%d:%d:%d",&ae[i].hour,&ae[i].minute,&ae[i].second);
        }
        sort(ab,ab+n,compare);
        sort(ae,ae+n,compare);
        cout<<ab[0].name<<" "<<ae[n-1].name<<endl;
    }
}

自定义sort,这题应该可以用优先队列或者map做,优先队列不知道为什么自定义小于号会报错,这里不会,所以这里先用这个做一个简单的题解,对于报错正在调查

全部评论

相关推荐

不愿透露姓名的神秘牛友
10-11 19:51
已编辑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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