水题,注意vector从0开始,范围不确定的最好用vector;不用排序大概是on的复杂度,但是排序一下感觉写起来快一点,时间上也对,然后善用替换方便人生
#include <cstdio>
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
struct timeh{
int h,m,s;
};
struct person{
timeh signin,signout;
char name[20];
};
vector <person> building;
bool cmp1(person a,person b){
if (a.signin.h!=b.signin.h) return a.signin.h<b.signin.h;
else if (a.signin.m!=b.signin.m) return a.signin.m<b.signin.m;
else return a.signin.s<b.signin.s;
}
bool cmp2(person a,person b){
if (a.signout.h!=b.signout.h) return a.signout.h<b.signout.h;
else if (a.signout.m!=b.signout.m) return a.signout.m<b.signout.m;
else return a.signout.s<b.signout.s;
}
int main(){
freopen("1.txt","r",stdin);
int n;
cin>>n;
for (int i=0;i<n;i++){
person temp;
scanf("%s",temp.name);
scanf("%d:%d:%d",&temp.signin.h,&temp.signin.m,&temp.signin.s);
scanf("%d:%d:%d",&temp.signout.h,&temp.signout.m,&temp.signout.s);
building.push_back(temp);
}
sort(building.begin(),building.end(),cmp1);
cout<<building[0].name<<" ";
sort(building.begin(),building.end(),cmp2);
cout<<building[n-1].name<<endl;
return 0;
}