PTA L1-043 阅览室
2020-03-05 12:52
141 查看
天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下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
我的代码:
#include<iostream> using namespace std; int main() { int day; cin>>day; int i,j,k; int book[3000]; char c[3000],a[3000]; string s[3000]; int man[10]={0}; int hh1,mm1,hh2,mm2; int minute[10]={0}; for(i=0;i<day;i++) { for(k=0;;k++) { cin>>book[k]; cin>>c[k]; cin.get(a[k]); getline(cin,s[k]); if(book[k]==0) break; for(j=k-1;j>=0;j--) { if(book[j]==book[k]&&(c[k]=='E'&&c[j]=='S')) { man[i]++; c[j]='0'; c[k]='0'; hh1=(s[j].at(0)-48)*10+s[j].at(1)-48; mm1=(s[j].at(3)-48)*10+s[j].at(4)-48; hh2=(s[k].at(0)-48)*10+s[k].at(1)-48; mm2=(s[k].at(3)-48)*10+s[k].at(4)-48; minute[i]=(hh2-hh1)*60+(mm2-mm1)+minute[i]; } } } } for(i=0;i<day;i++) { if(man[i]!=0) { if(minute[i]%man[i]) cout<<man[i]<<" "<<minute[i]/man[i]+1<<endl; else cout<<man[i]<<" "<<minute[i]/man[i]<<endl; } else cout<<0<<" "<<0<<endl; } return 0; }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- PTA L1-043 阅览室(团体程序设计天梯赛)
- PTA L1-043 阅览室 (20 分)
- PTA L1-043 阅览室
- L1-043. 阅览室
- PAT L1-043. 阅览室
- L1-043. 阅览室
- L1-043. 阅览室
- PAT 天梯赛 L1-043. 阅览室 【STL】
- L1-043. 阅览室
- L1-043. 阅览室
- 天梯赛 L1-043 阅览室 (20 分)
- L1-043. 阅览室
- L1-043. 阅览室
- PAT L1 043 阅览室
- L1-043. 阅览室
- L1-043. 阅览室
- L1-043 阅览室 (20 分)
- L1-043 阅览室(坑坑坑。。完整测试点分析。)
- PAT 天梯赛 L1-043 阅览室
- PAT - 天梯赛 L1-043 阅览室