不知道出题人是不是有那个大病。
应该是测试点1,如果多次借,按照最后一次,多次还,按第一次。
注意四舍五入。还有就是getchar()把空格读了。
还有时间全换成了分钟60*小时+分钟。
#include <bits/stdc++.h>
using namespace std;
int main(){
int a[1003][10];
fill(a[0],a[0]+10030,-1);
int no,h,m;
char c;
int n,cnt=0,longtime=0,days=0;//cnt借了多少本书 longtime耗时时长
scanf("%d",&n);
for(int i=0;;i++){
scanf("%d",&no);
getchar();
scanf("%c",&c);
scanf("%d:%d",&h,&m);
if(no==0){
//计算输出
if(cnt==0){
printf("%d %d\n",0,0);
}else{
printf("%d %d\n",cnt,(int)((double)longtime/cnt+0.5));
}
cnt=0;
longtime=0;
fill(a[0],a[0]+10030,-1);
days++;
if(days==n){
break;
}
}else{
if(c=='S'){
a[no][0]=60*h+m;//最后一次借出时间
}else{
//结束检查
if(a[no][0]!=-1&&a[no][1]==-1){//第一次归还时间
cnt++;
longtime+=(h*60+m-a[no][0]);
a[no][0]=-1;//这一次已经结算了
a[no][1]=-1;
}
}
}
}
return 0;
}
标签:cnt,no,int,scanf,60,阅览室,longtime,L1,043
From: https://www.cnblogs.com/chengyiyuki/p/18068962