L1-043 阅览室 (20 分)

模拟。

注意点

所有未与 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\n",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;
}
posted @ 2021-04-24 11:07  Dazzling!  阅读(56)  评论(0编辑  收藏  举报