用一个book数组标记一下这本书是否被借了,如果被借了,那么下次归还的时间就计算时间,两个测试点有坑。
关于第一个测试点,如果一本书被第一个人借了,在他还书之前另一个人也借了这本书,则用另一个人的借书信息覆盖第一个人的信息。
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int book[10000],time[10000],sumtime=0,count=0;
int i,j,n,a,b,c;
char ch;
cin>>n;
for (i=0;i<n;i++)
{
count=0;
sumtime=0;
//一定要重置book
memset(book,0,sizeof(book));
memset(time,0,sizeof(time));
while (1)
{
scanf("%d %c %d:%d",&a,&ch,&b,&c);
if (a==0)
{
printf("%d ",count);
if (count!=0)
printf("%.0lf\n",(double)sumtime/count);
else
printf("0\n");
break;
}
if (/*book[a]==0&&*/ch=='S')//第一个测试点
{
book[a]=1;
time[a]=60*b+c;
}
if (book[a]==1&&ch=='E')
{
sumtime+=60*b+c-time[a];
book[a]=0;//第三个测试点
time[a]=0;//第三个测试点
count++;
}
}
}
}