A1095 Cars on Campus (30 分)
Zhejiang University has 8 campuses and a lot of gates. From each gate we can collect the in/out times and the plate numbers of the cars crossing the gate. Now with all the information available, you are supposed to tell, at any specific time point, the number of cars parking on campus, and at the end of the day find the cars that have parked for the longest time period.
Input Specification:
Each input file contains one test case. Each case starts with two positive integers N (≤), the number of records, and K (≤) the number of queries. Then N lines follow, each gives a record in the format:
plate_number hh:mm:ss status
where plate_number
is a string of 7 English capital letters or 1-digit numbers; hh:mm:ss
represents the time point in a day by hour:minute:second, with the earliest time being 00:00:00
and the latest 23:59:59
; and status
is either in
or out
.
Note that all times will be within a single day. Each in
record is paired with the chronologically next record for the same car provided it is an out
record. Any in
records that are not paired with an out
record are ignored, as are out
records not paired with an in
record. It is guaranteed that at least one car is well paired in the input, and no car is both in
and out
at the same moment. Times are recorded using a 24-hour clock.
Then K lines of queries follow, each gives a time point in the format hh:mm:ss
. Note: the queries are given in accendingorder of the times.
Output Specification:
For each query, output in a line the total number of cars parking on campus. The last line of output is supposed to give the plate number of the car that has parked for the longest time period, and the corresponding time length. If such a car is not unique, then output all of their plate numbers in a line in alphabetical order, separated by a space.
Sample Input:
16 7
JH007BD 18:00:01 in
ZD00001 11:30:08 out
DB8888A 13:00:00 out
ZA3Q625 23:59:50 out
ZA133CH 10:23:00 in
ZD00001 04:09:59 in
JH007BD 05:09:59 in
ZA3Q625 11:42:01 out
JH007BD 05:10:33 in
ZA3Q625 06:30:50 in
JH007BD 12:23:42 out
ZA3Q625 23:55:00 in
JH007BD 12:24:23 out
ZA133CH 17:11:22 out
JH007BD 18:07:01 out
DB8888A 06:30:50 in
05:10:00
06:30:50
11:00:00
12:23:42
14:00:00
18:00:00
23:59:00
Sample Output:
1
注意点:1.查询时 now 必须放在外面不然会重复循环导致超时!!!
4
5
2
1
0
1
JH007BD ZD00001 07:20:09
2.清空cout缓存用cout<<flush;否则使用ios::sync_with_stdio(false);
cin.tie(0)时不与printf兼容,可能输出顺序错误。
#include<bits/stdc++.h>
using namespace std; const int maxn=; struct Record{
string carId;
int hh;
int mm;
int ss;
int time;
string status;
int flag;
}rec[maxn],valid[maxn]; int n,k; map<string,int> parkTime; int num=;
int maxTime=-; bool cmp1(Record a,Record b){
if(a.carId!=b.carId)
return a.carId<b.carId;
else
return a.time<b.time;
} bool cmp2(Record a,Record b){ return a.time<b.time; } int main(){ ios::sync_with_stdio(false);
cin.tie(); cin>>n>>k; // scanf("%d%d",&n,&k); char c;
Record temp; for(int i=;i<n;i++){
cin>>temp.carId>>temp.hh>>c>>temp.mm>>c>>temp.ss>>temp.status; //char str1[100];
//char str2[100];
//scanf("%s %d:%d:%d %s",&str1[0],&temp.hh,&temp.mm,&temp.ss,&str2[0]);
//temp.carId=str1;
//temp.status=str2; temp.time=temp.hh*+temp.mm*+temp.ss; if(temp.status=="in")
temp.flag=;
else
temp.flag=; rec[i]=temp;
} sort(rec,rec+n,cmp1); for(int i=;i<n-;i++){
if(rec[i].carId==rec[i+].carId&&
rec[i].flag==&&rec[i+].flag==){
valid[num++]=rec[i];
valid[num++]=rec[i+]; string carId=rec[i].carId; if(parkTime.count(carId)==){
parkTime[carId]=;
} parkTime[carId]+=(rec[i+].time-rec[i].time); maxTime=max(maxTime,parkTime[carId]); }
} sort(valid,valid+num,cmp2); int now=,nowCar=; //now必须放外面 for(int i=;i<k;i++){
int hh,mm,ss;
char c; cin>>hh>>c>>mm>>c>>ss; //scanf("%d:%d:%d",&hh,&mm,&ss); int queryTime=hh*+mm*+ss; while(now<num&&valid[now].time<=queryTime){
if(valid[now].flag==) nowCar++;
else nowCar--; now++; } cout<<nowCar<<endl; //printf("%d\n",nowCar); } for(map<string,int>::iterator it = parkTime.begin(); it != parkTime.end();it++){
if(it->second==maxTime)
{
cout<<it->first<<" "; // printf("%s ",it->first.c_str());
}
} cout<<flush; //清空cout缓存 //cout<<maxTime<<" "<<parkTime["JH007BD"]<<" "<<parkTime["ZD00001"]<<endl; printf("%02d:%02d:%02d\n",maxTime/,(maxTime/)%,maxTime%); return ;
}
A1095 Cars on Campus (30 分)的更多相关文章
- A1095 Cars on Campus (30)(30 分)
A1095 Cars on Campus (30)(30 分) Zhejiang University has 6 campuses and a lot of gates. From each gat ...
- 【PAT甲级】1095 Cars on Campus (30 分)
题意:输入两个正整数N和K(N<=1e4,K<=8e4),接着输入N行数据每行包括三个字符串表示车牌号,当前时间,进入或离开的状态.接着输入K次询问,输出当下停留在学校里的车辆数量.最后一 ...
- pat 甲级 Cars on Campus (30)
Cars on Campus (30) 时间限制 1000 ms 内存限制 65536 KB 代码长度限制 100 KB 判断程序 Standard 题目描述 Zhejiang University ...
- 【刷题-PAT】A1095 Cars on Campus (30 分)
1095 Cars on Campus (30 分) Zhejiang University has 8 campuses and a lot of gates. From each gate we ...
- PAT A1095 Cars on Campus (30 分)——排序,时序,从头遍历会超时
Zhejiang University has 8 campuses and a lot of gates. From each gate we can collect the in/out time ...
- 1095 Cars on Campus (30)(30 分)
Zhejiang University has 6 campuses and a lot of gates. From each gate we can collect the in/out time ...
- 1095. Cars on Campus (30)
Zhejiang University has 6 campuses and a lot of gates. From each gate we can collect the in/out time ...
- A1095. Cars on Campus
Zhejiang University has 6 campuses and a lot of gates. From each gate we can collect the in/out time ...
- PAT (Advanced Level) Practise - 1095. Cars on Campus (30)
http://www.patest.cn/contests/pat-a-practise/1095 Zhejiang University has 6 campuses and a lot of ga ...
随机推荐
- js中浏览器对象BOM
参考 : https://www.cnblogs.com/Peng2014/p/4725524.html 1. window对象 https://www.runoob.com/jsref/ob ...
- 跨域解决方法之window.name
window对象有一个name属性,该属性有一个特征:即在一个窗口的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每一个页面对window.name都有读写的权限,window ...
- Openstack贡献者须知 — OpenPGP/SSH/CLA贡献者协议
目录 目录 前言 Openstack基金委员会 Openstack贡献者须知 注册Openstack In Launchpad 生成并上传OpenPGP密钥 生成并上传SSH公钥 Join The O ...
- 23. Jmeter使用ServerAgent对服务器进行性能监控
我们在做服务器性能测试的时候,往往会考虑四个点:CPU.网络.磁盘.内存.一般情况下是使用Linux命令进行监控,那么jmeter可否做到呢?答案是可以的,闲话不多说,进入正题. 环境准备 jmete ...
- Unity5.2.1上Android真机调试环境配置
下载SDK,JDK安装,配置JAVA环境 1.下载SDK,下载adt-bundle-windows-x86_64-20131030.zip,下载地址:http://pan.baidu.com/shar ...
- ajaxFileUpload.js插件支持多文件上传的方法
前提条件:ajaxFileUpload.js插件多文件上传步骤:1.修改源码,(源码只支持单个文件的上传):复制代码 代码如下: //修改前代码------- //var oldElement = j ...
- Ibatis sql语句1
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMap PUBLIC "-/ ...
- python:异常处理及程序调试
1.异常概述 在程序运行过程中,经常会遇到各种各样的错误.这些错误统称为“异常”,在这些一场中有的是由于开发者将关键词写错导致,这类错误产生的是SyntaxError.invalid syntax(无 ...
- MySQL在Win10与Ubuntu下的安装与配置
本文首发于cartoon的博客 转载请注明出处:https://cartoonyu.github.io/cartoon-blog 近段时间把自己电脑(win).虚拟机(Ubun ...
- 二、springcloud微服务测试环境搭建
版本说明: springcloud:Greenwich.SR3 springboot:2.1.8 1.构建步骤 1.1.microservicecloud整体父工程Project 新建父工程micro ...