地址 https://pintia.cn/problem-sets/994805342720868352/problems/994805516654460928
题目大意是 按照HH:MM:SS 形式输入一个员工的签到签出时间,要求我们找到最早签到和最晚签出的员工id
输入格式
第一行 一个整数 N 表示有N个员工
下面N行的格式是 ID_number Sign_in_time Sign_out_time
ID_number 是员工ID Sign_in_time 是签到时间 Sign_out_time是签出时间
输出格式
ID_number ID_number
找到最早签到和最晚签出的员工id 用空格隔开
Sample Input: 3 CS301111 15:30:28 17:00:10 SC3021234 08:00:00 11:25:25 CS301133 21:45:00 21:58:40 Sample Output: SC3021234 CS301133
考核点 字符串排序
我们可以观察到 如果将时间按照字典序排序
那么最早的时间就是第一个
如果逆序排序 最晚的时间就是第一个
所以使用STL进行时间字符串排序就可以解决该题
#include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; vector<string> vv[1010]; int n; bool sortOut(const vector<string>& a, const vector<string>& b) { if (a[2] < b[2]) return false; return true; } bool sortIn(const vector<string>& a, const vector<string>& b) { if (a[1] > b[1]) return false; return true; } int main() { cin >> n; for (int i = 0; i < n; i++) { string name, in, out; cin >> name >> in >> out; vv[i].push_back(name); vv[i].push_back(in); vv[i].push_back(out); } sort(&vv[0], &vv[0] + n, sortIn); cout << vv[0][0] << " "; sort(&vv[0], &vv[0] + n, sortOut); cout << vv[0][0] << endl; return 0; }