map底层是红黑树,可用于排序
分别用enter和leave时的timeStamp作key即可
注意用rbegin取reverse_iterator获得最后一个元素
#include<iostream>
#include<string>
#include<map>
using namespace std;
struct timeStamp{
int hour;
int minute;
int second;
bool friend operator<(timeStamp a,timeStamp 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;
}
}
};
struct record{
string id;
timeStamp enter,leave;
};
int main(){
int n;
string id;
map<timeStamp,string> enter;
map<timeStamp,string> leave;
timeStamp enterStamp;
timeStamp leaveStamp;
while(cin>>n){
for(int i=0;i<n;i++){
cin>>id;
cin>>enterStamp.hour;
cin.ignore(1);
cin>>enterStamp.minute;
cin.ignore(1);
cin>>enterStamp.second;
cin.ignore(1);
cin>>leaveStamp.hour;
cin.ignore(1);
cin>>leaveStamp.minute;
cin.ignore(1);
cin>>leaveStamp.second;
cin.ignore(1);
enter[enterStamp] = id;
leave[leaveStamp] = id;
}
map<timeStamp,string>::iterator first = enter.begin();
map<timeStamp,string>::reverse_iterator last = leave.rbegin();
cout<<first->second<<" "<<last->second<<endl;
}
return 0;
}

京公网安备 11010502036488号