HDU 6023 Automatic Judge

题意

根据提交时间及判题状态,模拟 ICPC 赛制的比赛结果(过题数及总用时,包括罚时)。

解题思路

简单模拟即可,STL 的 map 记录 对应 problem ID 的通过情况,已经通过记录为 mp[pid] = 通过时间 ,未通过的记录为 mp[pid]= -(错误提交次数) ,尚未提交的应满足 mp.find(pid) == mp.end()

代码

#include<bits/stdc++.h>
using namespace std;
char s[5];
map<int, int> mp;
int main()
{
    int T, N, M;
    scanf("%d",&T);
    while(T--)
    {
        mp.clear();
        int solved = 0, penalty = 0;
        scanf("%d %d",&N,&M);
        for(int i=0, pid, h, m;i<M;i++)
        {
            scanf("%d %d:%d %s", &pid, &h, &m, s);
            if(s[0] == 'A') {
                m += h*60;
                if(mp.find(pid) != mp.end() && mp[pid] >= 0)    continue;
                solved++;
                penalty += m + mp[pid]*(-20);
                mp[pid] = m;
            } else {
                if(mp.find(pid) != mp.end()){
                    if(mp[pid]<0)   mp[pid]--;
                    else    continue;
                } else {
                    mp[pid] = -1;
                }
            }
        }
        printf("%d %d\n", solved, penalty);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值