• L1-043 阅览室 (20 分)


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

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

    输入格式:

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

    书号([1, 1000]内的整数) 键值SE) 发生时间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




     1 #include <bits/stdc++.h>
     2 const int N  =200;
     3 const int inf = 0x3f3f3f3f;
     4 #define ll long long 
     5 using namespace std;
     6 #define  P  pair<int,int>
     7 int n;
     8 set<int>se;
     9 int id;
    10 int  h,m;
    11 char ex;
    12 map<int,P>mp;
    13 int main()
    14 {
    15     se.clear();
    16     scanf("%d",&n);
    17 int  sum = 0;
    18     int cnt =0,ret = 0;
    19     while(cin>>id){
    20     cin>>ex;
    21     scanf("%02d:%02d",&h,&m);
    22     if(id==0){
    23         printf("%d ",cnt);
    24         
    25     //    printf("%dlll
    ",sum);
    26     if(cnt==0) printf("0
    ");
    27     else{
    28     
    29         double x = sum*1.0/cnt;
    30         int y   =round(x);//不能直接输出round(x) 
    31     printf("%d
    ",y);
    32 }
    33 //printf("%.2f
    ",x);
    34         se.clear();
    35         sum=0.0;
    36         ret++;
    37         cnt=0;
    38         if(ret==n) break;
    39     }
    40     else     if(ex=='S') //不能未出现就插入:比如   E E 
    41         {
    42         se.insert(id);
    43     //    printf("%d
    ",se.size());
    44         
    45         
    46             mp[id].first  = h;mp[id].second = m;
    47             
    48         
    49         
    50     }
    51     else     if(ex=='E')         
    52         {
    53             //se.erase(id);
    54             if(se.count(id)==1){//必须是还书而且之前被借过,才可以            
    55         cnt++;
    56         se.erase(id);//如果又有一个对应的E呢 
    57     //    printf("%d
    ",cnt);
    58         P p  =mp[id];
    59         int sum1=p.first*60+p.second;
    60       //printf("sum1 %d
    ",sum1);
    61         sum+=((h*60+m)-sum1);
    62     }
    63         //printf("sum %d
    ",sum);
    64     }            
    65     }
    66     return 0;
    67 }
  • 相关阅读:
    maven学习(一)
    maven插件开发(二)
    Maven 插件开发(一)
    vue前后端交互
    vue 操作
    公共事件处理函数js库
    javascript 代码可读性
    你真的已经搞懂JavaScript了吗?
    js中常常容易忘记的基本概念
    面试的时候应该想的问题
  • 原文地址:https://www.cnblogs.com/tingtin/p/10617982.html
Copyright © 2020-2023  润新知