1956 计算罚时

来源:互联网 发布:禅道 mac 安装 编辑:程序博客网 时间:2024/04/27 16:32
描述

在编程啦比赛的记分板上,有一列叫做“罚时”,这个奇怪的数字究竟是怎么算出来的呢?

留意的同学可能知道,记分板的“查看记分详单”页面,有这么一段注释:

注:(X/Y) —— X表示该题提交次数,Y表示首次通过该题的时间,单位为分钟。
对通过的题计算罚时,计算方式为 (X-1)*20 + Y。未通过的题不计算罚时。

具体说来,其中X表示该题首次正确提交之前(包括正确那次)该题的提交次数,比如某次上机中,豆豆同学的提交记录如下(比赛开始时间为14:30):

· B Accepted (AC) 14:52

· A Wrong Answer (WA) 14:58

· A Wrong Answer (WA) 14:59

· A Wrong Answer (WA) 15:00

· A Accepted (AC) 15:05

· C Wrong Answer (WA) 15:12

· C Wrong Answer (WA) 15:14

· C Accepted (AC) 15:15

· D Accepted (AC) 15:21

· A Presentation Error (PE) 15:32

· A Accepted (AC) 15:33

· E Time Limit Exceeded (TLE) 15:55

则对于A题,X=4(计算该题的X时无视该题AC后的提交记录以及其他题的记录),Y=35(分钟),由于通过该题带来的罚时为:(4-1)*20+35=95;

对于E题,罚时为零,因为这题始终没有通过(Accepted)。

现在,告诉你某次上机中,豆豆的所有提交记录,你能帮助豆豆计算出罚时吗?

输入

第一行为一个整数M,表示有M组数据(M<10)。

对于每组数据,第一行为一个整数N,表示共有N条提交记录(N<20)。

以下N行,每行有两个整数P、T和一个字符串S,表示第P题在比赛开始后第T分钟有一次提交(1<=P<=5,0<=T<=150),结果为S,S为以下7种情况之一(缩写):

· Accepted (AC)

· Presentation Error (PE)

· Compilation Error (CE)

· Wrong Answer (WA)

· Runtime Error (RE)

· Time Limit Exceeded (TLE)

· Memory Limit Exceeded (MLE)

详见样例,其中N条记录已按照时间顺序排列。

输出

对于每组数据输出一行,即总罚时(各题的罚时之和)。

样例输入
2
2
1 10 WA
1 15 AC
4
1 10 WA
2 15 AC
2 17 PE
2 17 AC
样例输出
35
15

模拟题

#include <stdio.h>#include <string.h>int main(){int number,t,tt;int n,i;int no,time;char upset[6];char a[6][6];//题目状态int b[6]; //题号int flag[6];//通过情况int count[6];//计算次数int temp[6];int sum;scanf("%d",&number);for (t=1;t<=number;t++){sum=0;for(i=0;i<6;i++){b[i]=0;count[i]=0;flag[i]=0;temp[i]=0;}scanf("%d",&n);for(tt=1;tt<=n;tt++){scanf("%d %d %s",&no,&time,&upset);strcpy(a[no],upset);b[no]=1;if(a[no][0]=='A'){if(flag[no]!=1){flag[no]=1;temp[no]=time;}}else{if(flag[no]!=1)count[no]++;}}for(i=0;i<6;i++){if(b[i]==1){if(flag[i]==1){sum+=(count[i])*20+temp[i];}}}printf("%d\n",sum);}return 0;}



原创粉丝点击