本题为pta 团体天梯赛练习题L1-043,题目链接如下
本题需要注意:
1 每天结束后都会清除记录(可以当做不允许带出阅览室)。
2由于记录不完整,只有还书E时可以找到借书S记录才算作有效记录。使用state记录书籍是否被借出。
#include<stdio.h>
typedef struct {
int startTime;
int state;//0表示未被借出,1表示被借出。
}Book;
int getTime(int hour, int minute){
return hour*60+minute;
}
int main(){
Book book[1001];
int id,hour,minute,days;
char tag;
int i,j;
int totalTime,cnt,averTime;
scanf("%d",&days);
for(i=0;i<days;i++){
totalTime=cnt=0;
for(j=1;j<=1000;j++){//初始化book[]
book[j].state=0;
}
while(1){
scanf("%d %c %d:%d",&id,&tag,&hour,&minute);
if(id==0) break;//标号为0结束该天记录
if(tag=='S'){//借书时
book[id].startTime=getTime(hour,minute);//更新书籍借出时间
book[id].state=1;//状态更新为借出
}else if(tag=='E'){//还书时
if(book[id].state==0) continue;记录不完整只有E没有S
totalTime+=getTime(hour,minute)-book[id].startTime;
cnt++;
book[id].state=0;//书已被还,state置为0
}
}
if(cnt==0) printf("0 0\n");
else {
averTime=(int)(totalTime*1.0/cnt+0.5);//四舍五入
printf("%d %d\n",cnt,averTime);
}
}
return 0;
}