L1-043 阅览室

不知道出题人是不是有那个大病。
应该是测试点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;
}
posted @ 2024-03-12 18:16  YuKiCheng  阅读(23)  评论(0编辑  收藏  举报