#include int p[101][21], rp[101][21]; int s, m, n; int sm[21]; int preferred_music (int i) { int j; int pm = m+1; for (j = 1; j <= s; j ++) if (rp[i][sm[j]] < pm) pm = rp[i][sm[j]]; return p[i][pm]; } int friends (int cs, int cm) { int f = 0, i; if (cs > s) { int pm = preferred_music (0); for (i = 0; i < n; i ++) if (preferred_music (i) == pm) f ++; } else if (s-cs <= m-cm) for (i = cm; i <= m-(s-cs); i ++) { int ff; sm[cs] = i; ff = friends (cs+1, i+1); if (ff > f) f = ff; } return f; } int main (void) { int k, K; int i, j; FILE *in = fopen ("party.in", "r"); fscanf (in, "%d\n", &K); for (k = 1; k <= K; k ++) { fscanf (in, "%d %d %d\n", &s, &m, &n); for (i = 0; i < n; i ++, fscanf (in, "\n")) for (j = 0; j < m; j ++) { fscanf (in, "%d ", &p[i][j]); rp[i][p[i][j]] = j; } printf ("Data Set %d:\n", k); printf ("%d\n", friends (1,1)); } fclose (in); return 0; }