传送门
题意
给定n条租船与还船信息,求完整记录的租借次数,与平均时间
题解
用一个数组记录每个船号的借船时间,当还船的时间,首先判断是否借船,
如果存在借船,就计数++,并计算时间差计入总和中
源代码
#include<cstdio>
const int maxn = 102;
inline int ti(int h,int m){
return h*60+m;
}
int a[maxn];//记录是否借船,并保存借船的时间
//初始化为-1,不能为0,时间可为00:00
int main(){
int no,h,m;
char c;
int ans=0,t=0;
for(int i=0;i<maxn;++i)a[i]=-1;
while(~scanf("%d",&no)){
if(no==-1)break;
getchar();//忽略掉数字与字符之间的空格
scanf("%c%d:%d",&c,&h,&m);
if(no==0){
if(ans)printf("%d %d\n",ans,int(t*1.0/ans+0.5));
// t*1.0/ans+0.5 进位,利用向下取整的性质
else printf("0 0\n");
//为下次案例初始化
for(int i=0;i<maxn;++i)a[i]=-1;
ans=t=0;
}
if(c=='S')a[no]=ti(h,m);
else {
if(a[no]==-1)continue;
ans++;
t+=ti(h,m)-a[no];
a[no]=-1;
}
}
}