题解 | 开门人和关门人
开门人和关门人
https://www.nowcoder.com/practice/a4b37b53a44d454ab0834e1517983215
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <cstring> #include<iostream> #include<map> using namespace std; //每天的记录在第一行给出记录的条目数M (M > 0 ),下面是M行,每行的格式为 // 证件号码 签到时间 签离时间 其中时间按“小时:分钟:秒钟”(各占2位)给出,证件号码是长度不超过15的字符串。 //对每一天的记录输出1行,即当天开门和关门人的证件号码,中间用1空格分隔。 //注意:在裁判的标准测试输入中,所有记录保证完整,每个人的签到时间在签离时间之前,且没有多人同时签到或者签离的情况。 int main() { int m; while (scanf("%d",&m)!=EOF) { map<string, string> First;//map是有序不重复存储,所以输入的内容会按字典进行排序 map<string, string> Last; for (int i = 0; i < m; i++) { string number, FirstIn, LastOut; cin >> number >> FirstIn >> LastOut; First[FirstIn] = number; Last[LastOut] = number; } printf("%s %s\n", First.begin()->second.c_str(), (--Last.end())->second.c_str()); } return 0; }