西南交通大学2019ACM集训队选拔训练赛-第一轮 B题

做题有顺序

描述

在某次ACM比赛中,一共有8道题,分别是A, B, C… H题。题目难度随机分布,最终成绩与AC数目和时间都有关系,所以先做简单的题目便成了很多人的选择。为了方便起见,我们认为某题被AC的人数越多,则该题越简单。现给出n条提交记录,试找出最简单的题。

输入

多组测试数据,第一行一个整数t(1<=t<=100),表示包含t组测试数据

每组测试数据第一行包含一个整数n(1<=n<=1000),表示n条提交记录

接下来n行,每行包含一个字符 ch(‘A’ <= ch <= ‘H’) 和一个字符串 str 表示某次提交信息。ch表示此次提交题目题号,str表示提交结果:"Accepted"表示该题正确通过(即AC); "Wrong Answer"表示该题答案错误; "Time Limit Exceeded"表示程序运行时间超出规定时间; "Runtime Error"表示程序运行时发生错误,可能是数组访问越界,除零错误,栈溢出等; “Compile Error” 表示程序编译没有通过; “Memory Limit Exceeded” 表示程序使用内存过多

输出

每组数据输出一行,包含一个字符表示八道题中最简单的题。若多题一样简单,则输出那个最小的题号。

输入样例 1

1
7
A Accepted
B Wrong Answer
A Time Limit Exceeded
B Accepted
C Runtime Error
A Compile Error
B Accepted

输出样例 1

B

题解
本题只需判断每题AC的次数,可以设置一个数组,数组的元素分别表示各题AC的次数,一边输入一边判断,若输入为“Accepted”,则数组的相应元素加一,输入完成之后再找出数组中最大的元素,就可以得到相应的最简单的题。

代码

#include<stdio.h>
#include<string.h>
int main()
{
	int t,n,x[10],b,max,i;
	char ch,str[30];
	scanf("%d",&t);
	while(t--)
	{
		memset(x,0,sizeof(x));
		scanf("%d",&n);
		getchar();
		while(n--)
		{
			ch=getchar();
			getchar();
			gets(str);
			b=ch-65;
			if(str[0]=='A')
				x[b]++;
		}
		max=0;
		for(i=0;i<=7;i++)
		{
			if(x[max]<x[i])
				max=i;
		}
		printf("%c\n",max+65);
	}
	return 0;
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值