#include int main (void) { int k, K; int n, r, v; int i, j; char s[100][101]; char t[103]; int cr[100]; int vo[100]; int rv[10]; char invalid; FILE *in = fopen ("winner.in", "r"); fscanf (in, "%d\n", &K); for (k = 1; k <= K; k ++) { fscanf (in, "%d %d %d\n", &n, &r, &v); for (i = 0; i < n; i ++) { fgets (t, 101, in); t[strlen(t)-1] = 0; cr[i] = t[0] - '0'; strcpy (s[i], t+2); vo[i] = 0; } for (j = 0; j < v; j ++) { fgets (t, 101, in); t[strlen(t)-1] = 0; for (i = 1; i <= r; i ++) rv[i] = 0; invalid = 0; for (i = 0; i < n; i ++) { if (t[i] == 'x') { vo[i] ++; rv[cr[i]] ++; if (rv[cr[i]] > 1) invalid = 1; } } if (invalid) { for (i = 0; i < n; i ++) if (t[i] == 'x') vo[i] --; } } for (i = 1; i <= r; i ++) rv[i] = 0; for (i = 0; i < n; i ++) if (vo[i] > rv[cr[i]]) rv[cr[i]] = vo[i]; printf ("Data Set %d:\n", k); for (i = 0; i < n; i ++) if (vo[i] == rv[cr[i]]) printf ("%s\n", s[i]); } fclose (in); return 0; }