pat 甲级 1095(map应用+排序)

题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805371602845696

题目要求:

给出汽车的进站和出站的时间,查询k次,每一次查找出这个时间内有多少车还在,最后一行输出停留时间最长的汽车。

如果停留时间最长的不止一辆,就全部输出。

思路:

(1)首先求出每辆汽车的停留时间,想记录每一辆车的进出情况,然后排序,让同一辆车的in和out配对,

(2)求出最大的时间,mp对应每辆车的停留时间

(3)用num数组记录每一辆车i的下表的时候所存在的所有汽车

(4)输入时间,找到此时存在的汽车数量

(5)一开始我没想到用排序来记录汽车信息,不一定要用map,而且每个i都对应着一个时间,

因此又可以用时间来求出num的数组。

(6)注意输入的格式,要求\n,:都要有。

参考文章:https://www.liuchuo.net/archives/2951

#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int maxn = 10010;
struct Node{
	char id[10];
	int tim,hh,mm,ss,fg;
};
int num[8*maxn];
vector  vc,car;
map  mp;
Node tmp;
char str[10],zt[10];
bool cmp1(Node a,Node b)
{
	if(strcmp(a.id,b.id)!=0) return strcmp(a.id,b.id)<0;
	else return a.timtim)
			{
				printf("%d\n",num[j-1]);
				break;
			}
			else if(j==car.size()-1)
			{
				printf("%d\n",num[j]);
			}
		}
		now=j;
	}
	
	for(map::iterator it=mp.begin();it!=mp.end();it++)
	if(it->second==mxtim)
	printf("%s ",it->first.c_str());
	printf("%02d:%02d:%02d\n",mxtim/3600,mxtim%3600/60,mxtim%60);
	return 0;
}

 

你可能感兴趣的:(PAT,模拟题)