acm罚时

作为一个ACMer,总是习惯于在比赛中或比赛结束后查看自己的排名(Standing),有细心的同学发现Penalty(罚时),在相同做题数下Penalty越小越好(真是个令人振奋的发现)。让我们看看Penatly的计算方法:每道试题用时将从竞赛开始到试题解答被判定为正确(AC)为止,其间每一次提交运行结果被判错误的话将被加罚20分钟时间,未正确解答的试题不记时。例如:A、B两队都正确完成两道题目,其中A队提交这两题的时间分别是比赛开始后1:00和2:45,B队为1:20和2:00,但B队有一题提交了2次。这样A队的Penalty为1:00+2:45=3:45而B队为1:20+2:00+0:20=3:40,所以B队因Penalty少而获胜。当然如果你AC了某道题后,之后这一题所有提交的代码都不算罚时和时间(有时我也这么无聊~)。恰逢北化周一晚的周赛,在九楼机房18:00-22:00,考验随之而来——现在需要你计算大家的Penalty,Penalty初始为00:00,相信作为北化的ACMer相信你一定可以的!
输入

输入包含多组数据,每组数据的第一行包含一个正整数N(1= 输出

输出这位ACMer的Penalty,每个测试数据占一行
样例输入
3
18:05 A RE
19:11 A AC
20:00 B WA
1
20:27 F AC
样例输出
01:31
02:2
#include
#include
#include
using namespace std;
int main(){
    char time[20][5],num[20],zhuangtai[20][3];
    int n,m,hour1,visited,min1,i,n1,k,p,hour[20],min[20],visit[20],compare,compare1,compare2;
     
    while(scanf("%d",&n)!=EOF){//输入时间数据个数
        i=0;
        visited=0;//判断该题出现AC时前面有没出现过
        hour1=0;//最终小时
        min1=0;//最终分钟
        n1=n;//准备输入时间个数
        k=0;//计算有效AC个数
        while(n--){
        scanf("%s %c %s",time[i],&num[i],zhuangtai[i]);
         
    //  printf("%s %c %s",time[i],num[i],zhuangtai[i]);
        hour[i]=time[i][0]-48;
    //printf("%d\n",hour[i]);
    //cout< 59){
                hour[visit[m]]+=min[visit[m]]/60;
                min[visit[m]]=min[visit[m]]%60;
            }
        }   //for   
    }//forda
    for(m=0;m59){
        hour1+=min1/60;
        min1=min1%60;
    }
if(hour1<10)
            printf("0");
        printf("%d:",hour1);
        if(min1<10)
            printf("0");
        printf("%d",min1);
        printf("\n");
    }//while总
    return 0;
 
}
 

你可能感兴趣的:(acm罚时)