方法一,使用C++中字符串String
#include <cstdio>
#include <string>
#include <iostream>
using namespace std;
struct Records {
string ID_number;
string Sign_in_time;
string Sign_out_time;
};
int main() {
int m;
scanf("%d", &m);
Records record1, in, out;
in.Sign_in_time = "24:00:00";
out.Sign_out_time = "00:00:00";
for (int i = 0; i < m; i++) {
cin >> record1.ID_number >> record1.Sign_in_time >> record1.Sign_out_time;
if (record1.Sign_in_time < in.Sign_in_time) {
in = record1;
}
if (record1.Sign_out_time > out.Sign_out_time) {
out = record1;
}
}
printf("%s %s", in.ID_number.c_str(), out.ID_number.c_str());
return 0;
}
方法二
#include <cstdio>
struct Person {
char id[20];
int hour, minute, second;
} temp, earlier, last;
bool cmp(Person p1, Person p2) {
if (p1.hour != p2.hour) {
return p1.hour > p2.hour;
}
if (p1.minute != p2.minute) {
return p1.minute > p2.minute;
}
return p1.second > p2.second;
}
int main() {
int m;
scanf("%d", &m);
earlier.hour = 24;
earlier.minute = 60;
earlier.second = 60;
last.hour = 0;
last.minute = 0;
last.second = 0;
for (int i = 0; i < m; i++) {
scanf("%s %d:%d:%d", &temp.id, &temp.hour, &temp.minute, &temp.second);
if (cmp(earlier, temp)) {
earlier = temp;
}
scanf("%d:%d:%d", &temp.hour, &temp.minute, &temp.second);
if (!cmp(last, temp)) {
last = temp;
}
}
printf("%s %s", earlier.id, last.id);
return 0;
}
时间xx:xx:xx的读入可以按scanf(“%d:%d:%d",&hour, &minute, &second);的方法读入。