题目


解法1

点击查看代码
#include<iostream>
#include<vector>
#include<algorithm>
#include<unordered_map>
using namespace std;

struct Man{
    string id;
    int sin;
    int sout;
};

int s2s(string s){
    int pos1 = s.find(':');
    int hh = stoi(s.substr(0,pos1));
    
    string s1 = s.substr(pos1+1);
    int pos2 = s1.find(':');
    int mm = stoi(s1.substr(0,pos2));
    int ss = stoi(s1.substr(pos2+1));
    
    int ans = hh * 3600 + mm * 60 + ss;
    return ans;
}
bool cmp1(const Man& m1, const Man& m2){
    return m1.sin < m2.sin;
}
bool cmp2(const Man& m1, const Man& m2){
    return m1.sout > m2.sout;
}
int main(){
    int m; scanf("%d",&m);
    vector<Man> v(m);

    for(int i =0;i<m;i++){
        cin>>v[i].id;
        string in ,out;
        cin>>in>>out;
        v[i].sin = s2s(in);
        v[i].sout = s2s(out);
    }
    sort(v.begin(),v.end(),cmp1);
    cout<<v[0].id<<" ";

    sort(v.begin(),v.end(),cmp2);
    cout<<v[0].id;

    return 0;
}