做题有顺序
描述
在某次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;
}