PAT 甲级 1095 Cars on Campus

2024-06-19 16:38
文章标签 pat 1095 cars campus 甲级

本文主要是介绍PAT 甲级 1095 Cars on Campus,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PAT 甲级 1095 Cars on Campus

#include <bits/stdc++.h>
using namespace std;
const int kMAXN = 10010;
struct Car
{char id[8];int time;char status[4];
} all[kMAXN], valid[kMAXN];
int valid_num = 0;
map<string, int> parkTime;
int TimeToInt(int hh, int mm, int ss)
{return hh * 3600 + mm * 60 + ss;
}bool CmpIdAndTime(const Car& a, const Car& b)
{if (strcmp(a.id, b.id))return strcmp(a.id, b.id) < 0;return a.time < b.time;
}bool CmpTime(const Car& a, const Car& b)
{return a.time < b.time;
}int main()
{
#ifdef LOCALfreopen("input.txt", "r", stdin);
#endifint n, k, hh, mm, ss;cin >> n >> k;for (int i = 0; i < n; ++i) {scanf("%s %d:%d:%d %s", all[i].id, &hh, &mm, &ss, all[i].status);all[i].time = TimeToInt(hh, mm, ss);}sort(all, all + n, CmpIdAndTime);int max_time = -1;for (int i = 0; i < n - 1; ++i) {if (!strcmp(all[i].id, all[i + 1].id) && !strcmp(all[i].status, "in") &&!strcmp(all[i + 1].status, "out")) {valid[valid_num++] = all[i];valid[valid_num++] = all[i + 1];int this_in_time   = all[i + 1].time - all[i].time;parkTime[all[i].id] += this_in_time;max_time = max(max_time, parkTime[all[i].id]);}}sort(valid, valid + valid_num, CmpTime);int now     = 0;int num_car = 0;for (int i = 0; i < k; ++i) {scanf("%d:%d:%d", &hh, &mm, &ss);int time = TimeToInt(hh, mm, ss);while (now < valid_num && valid[now].time <= time) {if (!strcmp(valid[now].status, "in"))num_car++;elsenum_car--;now++;}printf("%d\n", num_car);}for (auto itr = parkTime.begin(); itr != parkTime.end(); ++itr) {if (itr->second == max_time) {printf("%s ", itr->first.c_str());}}printf("%02d:%02d:%02d", max_time / 3600, max_time % 3600 / 60,max_time % 60);
}

这篇关于PAT 甲级 1095 Cars on Campus的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1075572

相关文章

PAT-1039 到底买不买(20)(字符串的使用)

题目描述 小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如,YrR8RrY是小红想做的珠串;那么ppRYYGrrYBR2258可以

PAT-1028

题目描述 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。 输入描述: 输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个

每日一题——Python代码实现PAT乙级1048 数字加密(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 初次尝试  再次尝试 代码点评 代码结构 时间复杂度 空间复杂度 优化建议 我要更强 优化建议 完整代码及注释 时间复杂度和空间复杂度分析 进一步优化 哲学和编程思想 模块化

PAT-L1-020 帅到没朋友

L1-020 帅到没朋友 (20 分) 当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。 输入格式: 输入第一行给出一个正整数N(≤100),是已知朋友圈的个数;随后N行,每行首先给出一个正整数K(≤1000),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),I

PAT-L1-011. A-B

这个题目很坑,同样的算法思路,C++秒过,java怎么也超时,给跪 L1-011. A-B 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题要求你计算A-B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字

PAT-L1-010. 比较大小

L1-010. 比较大小 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 杨起帆(浙江大学城市学院) 本题要求将输入的任意3个整数从小到大输出。 输入格式: 输入在一行中给出3个整数,其间以空格分隔。 输出格式: 在一行中将3个整数从小到大输出,其间以“->”相连。 输入样例

PAT-L1-009. N个数求和

之前用java没跑出来,过了很久重新用python写了一遍跑出来了,原有的java的代码也没有删除,知道问题在哪里了,写在注意点里面 这道题目要考虑到细节 1.掌握求解最大公约数和最小公倍数的方法——辗转相除法 2.考虑最终的结果可能是负数的情况,应该先约分和变为整数和分数的情况后,再添加上符号 L1-009. N个数求和 时间限制 400 ms 内存限制 65536 kB 代码

PAT-L1-008. 求整数段和

L1-008. 求整数段和 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 杨起帆 给定两个整数A和B,输出从A到B的所有整数以及这些数的和。 输入格式: 输入在一行中给出2个整数A和B,其中-100<=A<=B<=100,其间以空格分隔。 输出格式: 首先顺序输出从A到B的

PAT-L1-006. 连续因子

一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为3*5*6*7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。 输入格式: 输入在一行中给出一个正整数N(1<N<231)。 输出格式: 首先在第1行输出最长连续因子的个数;然后在第2行中按“因子1*因子2*……*因子k”的格式输出最小的连续因子序列,其中因子按递增

PAT-L1-005. 考试座位号

L1-005. 考试座位号 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到