用一个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++;
            }
        }
    }
}