题解 | 开门人和关门人
#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做,优先队列不知道为什么自定义小于号会报错,这里不会,所以这里先用这个做一个简单的题解,对于报错正在调查
查看15道真题和解析
