#include #include int main (void) { FILE *in = fopen ("problemd.in", "r"); int k, K, n, N, t; int p, pc, p2, P; int m, M, j; int time[501][11]; int penalty[501][11]; int totaltime[501]; int solved[501]; int who[501]; fscanf (in, "%d\n", &K); for (k = 1; k <= K; k ++) { printf ("Data Set %d:\n", k); fscanf (in, "%d %d %d\n", &M, &N, &P); for (p = 1; p <= P; p ++) { solved[p] = 0; totaltime[p] = 0; who[p] = p; for (m = 0; m < M; m ++) { time[p][m] = -1; penalty[p][m] = 0; } } for (n = 0; n < N; n ++) { fscanf (in, "%d %c %d %d\n", &p, &m, &t, &j); m -= 'A'; if (j == 0) penalty[p][m] += 20; else if (time[p][m] < 0) { time[p][m] = t + penalty[p][m]; solved[p] ++; totaltime[p] += time[p][m]; } } for (p = 1; p <= P; p ++) { pc = p; for (p2 = p+1; p2 <= P; p2 ++) if (solved[p2] > solved[pc] || (solved[p2] == solved[pc] && totaltime[p2] < totaltime[pc])) pc = p2; printf ("%d %d %d\n", who[pc], solved[pc], totaltime[pc]); who[pc] = who[p]; solved[pc] = solved[p]; totaltime[pc] = totaltime[p]; } if (k < K) printf ("\n"); } fclose (in); return 0; }