【1006 25 时间处理】 Sign In and Sign Out
传送门
题意
给出 \(m\) 条出入记录,格式为(id,in_time,out_time),id 区分人,时间格式为 hh : mm : ss,找出第一个进入的和最后一个离开的人的 id
数据范围
\(0<|id|\leq 15\)
题解
- 简单的方式是将所有的时间转化为秒数直接对比数值的大小
- 通过格式化输入可以直接获得数值不用进行字符串的处理
Code
#include <bits/stdc++.h>
using namespace std;
pair<string, int> p;
string unlck, lck;
int mi = 999999, mx = -1;
int main() {
int m; cin >> m;
for (int i = 0; i < m; i++) {
string id; cin >> id;
int h, m, s; scanf("%d:%d:%d", &h, &m, &s);
int t = h * 3600 + m * 60 + s;
if (t < mi) unlck = id, mi = t;
scanf("%d:%d:%d", &h, &m, &s);
t = h * 3600 + m * 60 + s;
if (t > mx) lck = id, mx = t;
}
cout << unlck << ' ' << lck;
}

浙公网安备 33010602011771号