模拟。
注意点
所有未与 E 记录配对的 S 记录以及未与 S 记录配对的 E 记录都必须忽略。
const int N=1010;
struct Node
{
int st_tim;
int ed_tim;
}a[N];
bool borrow[N];
int n;
int calc(int hh,int mm)
{
return hh*60+mm;
}
int main()
{
cin>>n;
int sum=0,cnt=0;
for(int i=0;i<n;)
{
int id,hh,mm;
char op;
scanf("%d %c %d:%d",&id,&op,&hh,&mm);
if(id == 0)
{
if(cnt == 0) puts("0 0");
else printf("%d %.0f
",cnt,sum*1.0/cnt);
cnt=sum=0;
memset(borrow,0,sizeof borrow);
i++;
}
else if(op == 'S')
{
borrow[id]=true;
a[id].st_tim=calc(hh,mm);
}
else if(op == 'E' && borrow[id])
{
borrow[id]=false;
a[id].ed_tim=calc(hh,mm);
sum+=a[id].ed_tim-a[id].st_tim;
cnt++;
}
}
//system("pause");
return 0;
}