PAT 甲级 1006 Sign In and Sign Out
水题,时间比较使用string的运算符即可
// 1006 Sign In and Sign Out.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <vector>
using namespace std;
struct node
{
string id;
string signin;
string signout;
};
int main()
{
int m;
cin >> m;
vector<node> v;
for (int i = 0; i < m; i++) {
node node;
cin >> node.id >> node.signin >> node.signout;
v.push_back(node);
}
string unlock, lock;
string max = "00:00:00", min = "23:59:59";
for (int i = 0; i < v.size(); i++) {
if (v[i].signin < min) {
min = v[i].signin;
unlock = v[i].id;
}
if (v[i].signout > max) {
max = v[i].signout;
lock = v[i].id;
}
}
cout << unlock << " " << lock;
return 0;
}
有更简洁的写法,边存边处理~ 由Coke is a bit sweet提供
#include <string>
#include <iostream>
using namespace std;
int main(){
string in="23:59:59",out="00:00:00",fname,lname;
int n;
cin>>n;
for(int i=0;i<n;i++){
string a,b,c;
cin>>a>>b>>c;
if(b<in) {in=b;fname=a;}
if(c>out){out=c;lname=a;}
}
cout<<fname<<" "<<lname;
return 0;
}