【易】阅览室 排序(有坑点)

发布时间:2019年03月16日 阅读:402 次

L1-3 阅览室 (20 分)

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

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

输入格式:

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

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

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

输出格式:

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

输入样例:

  1. 3
  2. 1 S 08:10
  3. 2 S 08:35
  4. 1 E 10:00
  5. 2 E 13:16
  6. 0 S 17:00
  7. 0 S 17:00
  8. 3 E 08:10
  9. 1 S 08:20
  10. 2 S 09:00
  11. 1 E 09:20
  12. 0 E 17:00

输出样例:

  1. 2 196
  2. 0 0
  3. 1 60
C++
  1. ACcode
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. struct node
  5. {
  6. int h,m;
  7. };
  8. int ok[10005];
  9. map<int,node> mp;
  10. int main()
  11. {
  12. int n;
  13. cin>>n;
  14. char tmp;
  15. int h1,m1;
  16. while(n--)
  17. {
  18. memset(ok,0,sizeof(ok));
  19. mp.clear();
  20. int cnt=0;
  21. int sum=0;
  22. int m;
  23. while(scanf("%d %c %2d:%2d",&m,&tmp,&h1,&m1)!=EOF && m)
  24. {
  25. if(tmp=='S')
  26. {
  27. ok[m]=1;
  28. mp[m].h=h1;
  29. mp[m].m=m1;
  30. }
  31. else if(ok[m]==1 && tmp=='E')
  32. {
  33. cnt++;
  34. sum+=(h1*60+m1)-(mp[m].h*60+mp[m].m);
  35. ok[m]=0;
  36. }
  37. }
  38. if(cnt) sum=((sum*1.0)/cnt)+0.5;
  39. cout<<cnt<<' '<<sum<<endl;
  40. }
  41. return 0;
  42. }
C++
  1. WAcode: (此代码错了一个测试点)
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. int main()
  5. {
  6. int u;
  7. cin>>u;
  8. int cnt = 0;
  9. int a;
  10. string b;
  11. int sum = 0;
  12. int ss =0;
  13. map<int,int>o;
  14. int book[2000]={0};
  15. while(cin>>a)
  16. {
  17. cin>>b;
  18. int c,d;
  19. scanf("%d:%d",&c,&d);
  20. if(b[0]=='S')
  21. {
  22. int dd = c*60+d;
  23. o[a] = dd;
  24. book[a]++;
  25. }
  26. else
  27. {
  28. if(book[a]>=1)
  29. {
  30. book[a] = 0;
  31. sum++;
  32. int dd = c*60+d;
  33. ss+=dd-o[a];
  34. }
  35. }
  36. if(a==0)
  37. {
  38. if(sum!=0)
  39. {
  40. int pp =0;
  41. if(ss%sum)pp++;
  42. pp+=ss/sum;
  43. cout<<sum<<" "<<pp<<endl;
  44. }
  45. else cout<<0<<" "<<0<<endl;
  46. sum = 0;
  47. ss = 0;
  48. o.clear();
  49. cnt++;
  50. memset(book,0,sizeof book);
  51. if(cnt>=u)break;
  52. }
  53. }
  54. }


Tag:
相关文章
发表评论

发表评论: