1058 选择题

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
struct ss {
	int score;
	string ans;//答案
	int num;//题号
	int wrong_count=0;
};
bool cmp(struct ss a,struct ss b) {
	return a.wrong_count==b.wrong_count?a.num<b.num:a.wrong_count>b.wrong_count;
}
int main() {
	int n,m;
	cin>>n>>m;
	int s[n]= {0};
	struct ss t[m];
	for(int i=0; i<m; ++i) {//题目信息录入 
		string ans="";
		int score,num;
		cin>>score>>num;
		cin>>num;
		t[i].score=score;
		t[i].num=i+1;
		t[i].ans="";
		for(int j=0; j<num; ++j) {
			cin>>ans;
			t[i].ans+=ans;
		}
	}
	getchar();
	for(int i=0; i<n; ++i) {//学生题目核对 
		for(int k=0; k<m; ++k) {
			string temp;
			int num,flag=0;
			scanf("(%d",&num);
			for(int j=0; j<num; ++j) {
				cin>>temp;
				if(j==num-1)
					temp=temp.substr(0,1);
				if(t[k].ans.find(temp)==string::npos||num!=t[k].ans.size())
					flag=1;
			}
			if(!flag)
				s[i]+=t[k].score;
			else t[k].wrong_count++;
			getchar();
		}
	}
	for(int i=0; i<n; ++i)
		cout<<s[i]<<endl;
	sort(t,t+m,cmp);
	if(!t[0].wrong_count)
		cout<<"Too simple\n";
	else {//找错误最多题数 
		cout<<t[0].wrong_count<<" "<<t[0].num;
		for(int i=1; i<m; ++i)
			if(t[i].wrong_count==t[i-1].wrong_count)
				cout<<" "<<t[i].num;
			else break;
	}
	return 0;
}

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:C马雯娟 返回首页