对getchar吸收字符的使用又熟练了一些
#include <cstdio>
#include <string>
#include <iostream>
using namespace std;
struct Title{
int grade;
int gs;
int zqgs;
string zqda;
};
int main(){
int n, m;
scanf("%d %d", &n, &m);
Title t[m+1];
for(int i=1; i<=m; i++){
scanf("%d %d %d", &t[i].grade, &t[i].gs, &t[i].zqgs);
string str = "";
for(int j=0; j<t[i].zqgs; j++){
getchar();
char c;
scanf("%c", &c);
str += c;
}
t[i].zqda = str;
}
int fs[n] = {
0};
int cuowu[m+1] = {
0};
for(int i=0; i<n; i++){
getchar();
for(int j=1; j<=m; j++){
int num;
getchar();
scanf("%d", &num);
string str = "";
for(int k=0; k<num; k++){
getchar();
char c;
scanf("%c", &c);
str += c;
}
getchar();
if(j != m) getchar();
if(str == t[j].zqda){
fs[i] += t[j].grade;
}else{
cuowu[j]++;
}
}
}
int flag = 0;
for(int i=0; i<n; i++){
printf("%d\n", fs[i]);
}
int max = -1;
for(int i=1; i<=m; i++){
if(cuowu[i] > max){
max = cuowu[i];
}
if(cuowu[i] != 0) flag =1;
}
int num = 0;
int temp[m];
for(int i=1; i<=m; i++){
if(cuowu[i] == max){
temp[num++] = i;
}
}
if(!flag){
printf("Too simple");
return 0;
}
printf("%d ", max);
for(int i=0; i<num; i++){
printf("%d", temp[i]);
if(i != num-1) printf(" ");
}
return 0;
}