PAT A1006 Sign In and Sign Out
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
#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
string unlock, lock;
cin >> unlock;
lock = unlock;
int h1, m1, s1, h2, m2, s2;
scanf("%d:%d:%d %d:%d:%d", &h1, &m1, &s1, &h2, &m2, &s2);
int min, max;
min_in = h1 * 3600 + m1 * 60 + s1;
max_out = h2 * 3600 + m2 * 60 + s2;
for(int i = 1; i < n; ++i){
string tmp;
cin >> tmp;
int H1, M1, S1, H2, M2, S2;
scanf("%d:%d:%d %d:%d:%d", &H1, &M1, &S1, &H2, &M2, &S2);
//注意!
int tmp_min, tmp_max;
tmp_min = H1 * 3600 + M1 * 60 + S1;
tmp_max = H2 * 3600 + M2 * 60 + S2;
if(tmp_min < min_in){
min_in = tmp_min;
unlock = tmp;
}
if(tmp_max > max_out){
max_out = tmp_max;
lock = tmp;
}
}
cout << unlock << " " << lock;
return 0;
}
-
TIPS: 注意
scanf()
的格式,要在%d
中间提前读入空格
和:
-
简化:
- 将min设为
INT_MAX
(无穷大), max设为INT_MIN
(无穷小) !!别搞反了!! ,包含在头文件climits
中 - 第一个人不用单独输入,可以放到循环里,通过两个if里的
lock = tmp``unlock = tmp
,就可以初始化了
- 将min设为
-
code:
#include <iostream>
#include <climits>
using namespace std;
int main(){
string unlock, lock;
int n, max, min;
scanf("%d", &n);
max = INT_MIN;
min = INT_MAX;
for(int i = 0; i < n; ++i){
string t;
cin >> t;
int h1, m1, s1, h2, m2, s2;
scanf("%d:%d:%d %d:%d:%d", &h1, &m1, &s1, &h2, &m2, &s2);
int tmpin = h1 * 3600 + m1 * 60 + s1;
int tmpout = h2 * 3600 + m2 * 60 + s2;
if(tmpin < min){
min = tmpin;
unlock = t;
}
if(tmpout > max){
max = tmpout;
lock = t;
}
}
cout << unlock << " " << lock;
return 0;
}
- T2 code:
#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3fffffff;
int main(){
int m, Max = -1, Min = INF;
string unlock, lock;
scanf("%d", &m);
for(int i = 0; i < m; ++i){
string id;
cin >> id;
int in[3], out[3], in_time = 0, out_time = 0;
scanf("%d:%d:%d %d:%d:%d", &in[0], &in[1], &in[2], &out[0], &out[1], &out[2]);
for(int j = 0; j < 3; ++j){
// in_time = in_time * 60 + in[i]; //Wrong1:睁大狗眼!
in_time = in_time * 60 + in[j];
}
for(int j = 0; j < 3; ++j) out_time = out_time * 60 + out[j];
if(in_time < Min){
Min = in_time;
unlock = id;
}
if(out_time > Max){
Max = out_time;
lock = id;
}
}
cout << unlock << " " << lock;
return 0;
}