题目链接
解题思路:按题目要求模拟即可,不要忘记每天结束后初始化借阅人数和阅读时长,另外如果完成一个人的S和E之后要把flag清零 否则可能会多加
#include <bits/stdc++.h>
using namespace std;
struct node
{
int start;
int endd;
int flag=0;
} a[1010];
int main()
{
int n;
cin>>n;
int sum=0,people=0;
while(n)
{
int num,h,m;
string s;
scanf("%d",&num);
cin>>s;
scanf("%d:%d",&h,&m);
if(num==0)
{
n--;
if(people==0)
printf("0 0\n");
else
printf("%d %.f\n",people,1.0*sum/people);
sum=0;//每天结束后清零
people=0;
memset(a,0,sizeof(a));
if(n==0)
break;
}
if(s=="S")
{
a[num].start=h*60+m;
a[num].flag=1;
}
else
{
a[num].endd=h*60+m;
if(a[num].flag==1)
{
sum+=a[num].endd-a[num].start;
people++;
a[num].flag=0;//记得清零 否则会出错
}
}
}
return 0;
}