PAT菜鸡笔记1006 Sign In and Sign Out

PAT菜鸡笔记1006 Sign In and Sign Out

在这里插入图片描述思路:
本题我使用了vector存结构体信息,写两个cmp对进入时间和出去时间分别排序,再输出就行了

#include<iostream>
#include<algorithm>
#include<vector>
#include<string.h>
using namespace std;
struct Info 
{
	char ID[15];
	int hour[2];
	int minue[2];
	int second[2];
};
vector<Info> table;
bool cmp_in(Info a, Info b)
{
	if (a.hour[0] != b.hour[0])
		return a.hour[0] < b.hour[0];
	else
		if (a.minue[0] != b.minue[0])
			return a.minue[0] < b.minue[0];
		else
			if (a.second[0] != b.second[0])
				return a.second[0] < b.second[0];
			else
				return strcmp(a.ID, b.ID) < 0;
}

bool cmp_out(Info a, Info b)
{
	if (a.hour[1] != b.hour[1])
		return a.hour[1] > b.hour[1];
	else
		if (a.minue[1] != b.minue[1])
			return a.minue[1] > b.minue[1];
		else
			if (a.second[1] != b.second[1])
				return a.second[1] > b.second[1];
			else
				return strcmp(a.ID, b.ID) < 0;
}
int main() {
	int N;
	Info a;
	scanf("%d", &N);
	for (int i = 0; i < N; i++)
	{
		scanf("%s", a.ID);
		scanf("%d:%d:%d %d:%d:%d", &a.hour[0], &a.minue[0], &a.second[0], &a.hour[1], &a.minue[1], &a.second[1]);
		table.push_back(a);
	}
	sort(table.begin(), table.end(), cmp_in);
	cout << table[0].ID<<" ";
	sort(table.begin(), table.end(), cmp_out);
	cout << table[0].ID;
	return 0;
}
发布了7 篇原创文章 · 获赞 0 · 访问量 131

猜你喜欢

转载自blog.csdn.net/weixin_43842155/article/details/104627651