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
4
5
2
1
0
1
JH007BD ZD00001 07:20:09
注意点:1.查询时 now 必须放在外面不然会重复循环导致超时!!!
    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 分)的更多相关文章

  1. 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 ...

  2. 【PAT甲级】1095 Cars on Campus (30 分)

    题意:输入两个正整数N和K(N<=1e4,K<=8e4),接着输入N行数据每行包括三个字符串表示车牌号,当前时间,进入或离开的状态.接着输入K次询问,输出当下停留在学校里的车辆数量.最后一 ...

  3. pat 甲级 Cars on Campus (30)

    Cars on Campus (30) 时间限制 1000 ms 内存限制 65536 KB 代码长度限制 100 KB 判断程序 Standard  题目描述 Zhejiang University ...

  4. 【刷题-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 ...

  5. 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 ...

  6. 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 ...

  7. 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 ...

  8. A1095. Cars on Campus

    Zhejiang University has 6 campuses and a lot of gates. From each gate we can collect the in/out time ...

  9. 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 ...

随机推荐

  1. EL表达式的简单介绍

    EL表达式的简单介绍 一.JSP EL语言定义 E L(ExpressionLanguage)  目的:为了使JSP写起来更加简单. 表达式语言的灵感来自于ECMAScript 和 XPath 表达式 ...

  2. RichView

    TRichView中文文档 TRichView 是Delphi/C++Builder  控件,主要用于显示.编辑和打印超文本文档. 新版本解决多个兼容性问题,更新了字符串标签.剪贴板.RTF和DB组件 ...

  3. 浅谈C/C++中的static和extern关键字

    static是C++中常用的修饰符,它被用来控制变量的存贮方式和可见性.extern "C"是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理函数的话 ...

  4. 架构-Java-Netty:Netty框架

    ylbtech-架构-Java-Netty:Netty框架 Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网 ...

  5. SSM框架整合思路

    SSM框架整合思路 Spring在整合中起到的作用(面试时常问到) Spring管理持久层的mapper. Spring管理业务层的service,service可以调用mapper接口.Spring ...

  6. Dubbo入门到精通学习笔记(二):Dubbo管理控制台、使用Maven构建Dubbo的jar包、在Linux上部署Dubbo privider服务(shell脚本)、部署consumer服务

    文章目录 Dubbo管理控制台 1.Dubbo管理控制台的主要作用: 2.管理控制台主要包含: 3.管理控制台版本: 安装 Dubbo 管理控制台 使用Maven构建Dubbo服务的可执行jar包 D ...

  7. 截取url中的某个字符串后面的值

    获取到当前网址 var url = window.location.href; http://localhost:8080/exam_questions?type=3 //获取url中的参数 func ...

  8. 解决 html5 input type='number' 类型可以输入e

    当给 input 设置类型为 number 时,比如,我想限制,只能输入 0-9 的正整数,正则表达式如下: /^[-]?$/ // 匹配 0-9 的整数且只匹配 0 次或 1 次 用正则测试,小数点 ...

  9. 拯救 Out Of Memory,8个案例带你飞!

    来自:唐尤华 https://bloggceasy.files.wordpress.com/2015/05/outofmemoryerror2.pdf 1. Java 堆空间 发生频率:5颗星 造成原 ...

  10. Java的GC是什么?做了什么?

    Java GC是Java的垃圾回收机制 Java堆是被所有线程共享的一块内存区域,所有对象实例和数组都在堆上进行内存分配.为了高效的进行垃圾回收,虚拟机把堆内存分为新生代,老年代和永久代3个区域 新生 ...