用一个数组既存数据又做标记的时候,一定要记得题目中得到的数组值有没有可能0。
#include <iostream>
#include<cstdio>#include<cstring>
using namespace std;
int a[100001];
int main()
{
freopen("C:\\Users\\Administrator\\Desktop\\in.txt","r",stdin);
int n;
int bh,s,e;
char ch;
scanf("%d",&n);
int cnt=0;
double sum=0;
memset(a,0,sizeof(a));
while(1)
{
if(n==0)
break;
scanf("%d %c %d:%d",&bh,&ch,&s,&e);
int t = s*60+e;
// printf("%d\n",t);
if(bh==0)
{
n--;
if(cnt==0)
printf("0 0\n");
else
printf("%d %d\n",cnt,(int)(sum/cnt+0.5));
cnt=0;
sum=0;
memset(a,0,sizeof(a));
}
else if(ch=='S'){
if(t==0)
a[bh]=-1;
else
a[bh]=t;
}
else if(ch=='E'&&a[bh])
{
cnt++;
if(a[bh]==-1)
sum+=t;
else
sum+=t-a[bh];
a[bh]=0;
}
}
return 0;
}