1956 计算罚时

描述

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

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

注:(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;
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值