PAT甲级1006

传送门

这道两个sort就可以解决问题了,多亏了C++中string自带的比较函数。

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
struct info{
	string ID_number;
	string Sign_in_time;
	string Sign_out_time;
};
bool unlock(info lhs,info rhs){
	return lhs.Sign_in_time<rhs.Sign_in_time;
}
bool lock(info lhs,info rhs){
	return lhs.Sign_out_time>rhs.Sign_out_time;
}
int main(int argc,char **argv){
	info I;
	string ID_number,Sign_in_time,Sign_out_time;
	string unlock_ID,lock_ID;
	vector<info> vi;
	int N;
	cin>>N;
	for(int i=0;i<N;i++){
		cin>>ID_number>>Sign_in_time>>Sign_out_time;
		I.ID_number=ID_number;I.Sign_in_time=Sign_in_time;I.Sign_out_time=Sign_out_time;
		vi.push_back(I);
	}
	std::sort(vi.begin(),vi.end(),unlock);
	unlock_ID=(*vi.begin()).ID_number;
	std::sort(vi.begin(),vi.end(),lock);
	lock_ID=(*vi.begin()).ID_number;
	cout<<unlock_ID<<" "<<lock_ID<<endl;
	return 0;
}


你可能感兴趣的:(PAT甲级1006)