用向量和sort函数做的,自己定义了结构体记录record和时间记录timerec

#include <iostream>
#include <vector>
#include <string>
#include <iomanip>
#include <algorithm>
using namespace std;

int str2int(string str){
    int result=0;
    for(int i=0;i<str.size();i++){
        result*=10;
        result+=(int)(str[i]-'0');
    }
    return result;
}

struct timerec{
    int hour;
    int min;
    int sec;
    timerec(){}
    timerec(int h,int m,int s):hour(h),min(m),sec(s){}
    timerec(string str){
        int pos=str.find(':');
        string h=str.substr(0,pos);
        str=str.substr(pos+1);
        pos=str.find(':');
        string m=str.substr(0,pos);
        string s=str.substr(pos+1);
        hour=str2int(h);
        min=str2int(m);
        sec=str2int(s);
    }
    friend ostream& operator<<(ostream& out,const timerec& t);
    bool operator<(const timerec& b){
        if(hour==b.hour){
            if(min==b.min){
                if(sec==b.sec){
                    return false;
                }else{
                    return sec<b.sec;
                }
            }else{
                return min<b.min;
            }
        }else{
            return hour<b.hour;
        }
    }
};

/*
ostream& operator<<(ostream& out,const timerec& t){
    cout<<setw(2)<<setfill('0')<<t.hour;
    cout<<':';
    cout<<setw(2)<<setfill('0')<<t.min;
    cout<<':';
    cout<<setw(2)<<setfill('0')<<t.sec;
    return out;
}
*/

struct record{
    string id;
    timerec come;
    timerec go;
    record(){}
    record(string t1,string t2,string t3){
        id=t1;
        timerec c=timerec(t2);
        timerec g=timerec(t3);
        come=c;
        go=g;
    }
};

bool comecmp(record a,record b){
    return a.come<b.come;
}

bool gocmp(record a,record b){
    return b.go<a.go;
}

int main(){
    int n;
    while(cin>>n){
        cin.ignore();
        if(n==0)
            break;
        string str;
        vector<record> r;
        for(int i=0;i<n;i++){
            getline(cin,str);
            int pos=str.find(' ');
            string t1=str.substr(0,pos);
            str=str.substr(pos+1);
            pos=str.find(' ');
            string t2=str.substr(0,pos);
            string t3=str.substr(pos+1);
            record temp=record(t1,t2,t3);
            r.push_back(temp);
        }
        sort(r.begin(),r.end(),comecmp);
        cout<<r[0].id<<' ';
        sort(r.begin(),r.end(),gocmp);
        cout<<r[0].id<<endl;
    }
}