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
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 分)的更多相关文章
- 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 ...
随机推荐
- JVM内存分为哪几部分?各个部分的作用是什么?
JVM内存区域分为五个部分,分别是堆,方法区,虚拟机栈,本地方法栈,程序计数器. 堆. 堆是Java对象的存储区域,任何用new字段分配的Java对象实例和数组,都被分配在堆上,Java堆可使用-Xm ...
- js——private 私有方法公有化
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 剑指offer——丑数(c++)
题目描述只包含质因子2.3和5的数称作丑数(UglyNumber).例如6.8都是丑数,但14不是,因为它包含质因子7,习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 思路:1.逐个 ...
- npm install 超时 国内 切换源; npm ERR! code ELIFECYCLE;
install 超时 查看npm源地址 npm config get registry #http://registry.npmjs.org 为国外镜像地址 设置阿里云镜像 npm config se ...
- 虚拟机安装(Cent OS)
转载:http://www.cnblogs.com/kkdd-2013/p/3973807.html 0 前言 本篇主要介绍在虚拟机VMware上安装CentOS6.5的过程,并且在自己电脑上安装成功 ...
- CSS:CSS 组合选择符
ylbtech-CSS:CSS 组合选择符 1.返回顶部 1. CSS 组合选择符 CSS 组合选择符 组合选择符说明了两个选择器直接的关系. CSS组合选择符包括各种简单选择符的组合方式. 在 CS ...
- 将.opt、.frm、.MYD、.MYI文件放入mysql
问题:如果数据库没有给sql脚本而且给的.opt..frm..MYD..MYI这些文件,应该如何加载呢???? 解答:首先需要找到“mysql的安装目录/data/”,怎么找?mysql命令执行“sh ...
- jquery 临时存值
function toSort(orderBy) { if (orderBy == $('#orderBy').data("order")) {// 再次点击同一个排序时 $('# ...
- PHPExcel导出工作蒲(多表合并)教程+详细代码解读
最近做了一个需求,导出统计数据,因为需要同时导出多个不同的统计数据,所以不能像以往导出数据列表一样去实现这个需求,刚好空下来就记录一下(PHPExcel导出Excel多sheet合并) 一.主要使用的 ...
- 阿里云 Server (Ubuntu 12.04) 配置 FTP
来自 http://blog.csdn.net/zgrjkflmkyc/article/details/45510345 这个是阿里云的官方用户手册 http://bbs.aliyun.com/re ...