L1-043. 阅览室

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越

天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。

注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有S没有E,或者只有E没有S的纪录,系统应能自动忽略这种无效纪录。另外,题目保证书号是书的唯一标识,同一本书在任何时间区间内只可能被一位读者借阅。

输入格式:

输入在第一行给出一个正整数N(<= 10),随后给出N天的纪录。每天的纪录由若干次借阅操作组成,每次操作占一行,格式为:

书号([1, 1000]内的整数) 键值(“S”或“E”) 发生时间(hh:mm,其中hh是[0,23]内的整数,mm是[0, 59]内整数)

每一天的纪录保证按时间递增的顺序给出。

输出格式:

对每天的纪录,在一行中输出当天的读者借书次数和平均阅读时间(以分钟为单位的精确到个位的整数时间)。

输入样例:

3
1 S 08:10
2 S 08:35
1 E 10:00
2 E 13:16
0 S 17:00
0 S 17:00
3 E 08:10
1 S 08:20
2 S 09:00
1 E 09:20
0 E 17:00

输出样例:

2 196
0 0
1 60 思路:
要注意几个坑点,如果同一本书在还没还书记录时有多次被借记录,取最后一次记录为准。
一本书在只借一次的情况下有多次还书记录,取最前面的一次还书记录,其余都是无效操作。 AC代码:
#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<cmath>
#include<map> using namespace std;
#define INF 0x3f3f3f3f
#define EPS 1e-5
#define pi cos(-1)
const int N_MAX = +;
struct Time {//time不能用,编译错误
int hour, min;
bool flag=;
Time() {}
Time(int hour,int min):hour(hour),min(min) {}
};
int main() {
int n;
while (scanf("%d",&n)!=EOF) {
int num,hour,min;
char c;
for (int i = ; i <= n;i++) {
map< int, Time > Map;
int res = ,ave = ;
while () {
scanf("%d %c %d:%d",&num,&c,&hour,&min);
if (num==) {//当天结束
if (res == )puts("0 0");
else printf("%d %.0f\n", res, (double)ave/res);
break;
}
if (c == 'S') {
Map[num] = Time(hour, min);//有多次借书记录,取最后一次借书记录(样例4)
}
else if (c == 'E') {
map<int, Time >::iterator it=Map.find(num);
if (it!=Map.end()&&it->second.flag==) {//有该书的借书记录,并且还没归还
it->second.flag = true;//若该书再次借出,不记录(样例2)
res++;
int diff = (hour - Map[num].hour)*+min-Map[num].min;
ave += diff;
}
} }
Map.clear();
}
}
return ;
}

最新文章

  1. nodejs review-04
  2. C#获取EF实体对象或自定义属性类的字段名称和值
  3. AngularJs的UI组件ui-Bootstrap分享(十三)——Progressbar
  4. 分享27款最佳的复古风格 WordPress 主题
  5. IOS之UI -- 按钮UIButton的细节
  6. ecmall二次开发 直接实例化mysql对象
  7. js正则表达式中的问号使用技巧总结
  8. 解析jQuery中extend方法--源码解析以及递归的过程《二》
  9. 理解maven的核心概念
  10. linux提取第一列且删除第一行(awk函数)
  11. event &amp; signals &amp; threads
  12. 大话设计模式:代理模式 C#
  13. java Concurrent包学习笔记(三):ReentrantLock
  14. 520 简单表白代码(JS)
  15. Hadoop日记Day9---HDFS的java访问接口
  16. html屏幕旋转事件监听
  17. Java的四个基本特性和对多态的理解
  18. Iperf是一个网络性能测试工具
  19. Web端主流框架,jquery、angular、react、vue
  20. yield 关键字

热门文章

  1. 【Django】URL中传递中文的问题
  2. centos7中使用LVM管理磁盘和挂载磁盘
  3. JZOJ 3463. 【NOIP2013模拟联考5】军训
  4. spark和MR比较
  5. VMWare workstation Pro 14 For Linux key
  6. [Uva1642]魔法Gcd(数论)
  7. Scrapy的架构与原理的理解【转】
  8. Kubernetes master服务定制编译docker镜像
  9. SQL调优--记一次表统计信息未及时更新导致查询超级慢
  10. Linux之如何进行固定IP、DNS等设置