PAT乙级1058 选择题 (20 分)

https://pintia.cn/problem-sets/994805260223102976/problems/994805270356541440

这道题是真麻烦

#include <iostream>
using namespace std;
struct t{
	int maxs, maxc, cc, cnt = 0;
	string correct;
};
t test[1002];
int main(){
	int N, M, score[1002] = {0};
	cin >> N >> M;
	for(int i = 0; i < M; i++){
		cin >> test[i].maxs >> test[i].maxc >> test[i].cc;
		getline(cin, test[i].correct);
	}
	for(int i = 0; i < N; i++){
		for(int j = 0; j < M; j++){
			string s = "";
			char c;
			c = getchar();
			while(c != '(')
				c = getchar();
			while(c == '('){
				c = getchar();
				int m = c-'0';
				for(int k = 0; k < 2*m; k++){
					c = getchar();
					s += c;
				}
			}
			if(s == test[j].correct)
				score[i] += test[j].maxs;
			else
				test[j].cnt++;
		}
	} 
	for(int i = 0; i < N; i++)
		cout << score[i] << endl;
	int tmpm = 0, tmpsub, flag = 0;
	for(int i = 0; i < M; i++){
		if(test[i].cnt > tmpm){
			tmpsub = i;
			tmpm = test[i].cnt;
		}
	}
	if(!tmpm)	cout << "Too simple";
	else{
		cout << tmpm;
		for(int i = 0; i < M; i++){
			if(test[i].cnt == tmpm)
				cout << " " << i+1;
		}
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值