#include #include #include #include #include using namespace std; map names; string nr[120]; int n,i,j,z, d, h; char s[120], s2[120]; pair t[100][100]; int won[100]; int pts[100]; int tie[100]; int lost[100]; int dal[100]; int dostal[100]; int hral[100]; void prn(int c, int m) { if (m >= 1000 && c < 1000) printf(" "); if (m >= 100 && c < 100) printf(" "); if (m >= 10 && c < 10) printf(" "); printf("%d", c); } int main() { while (scanf("%d", &n), n > 0) { getchar(); for (i = 0; i < n; i++) { scanf("%s", s); getchar(); names[s] = i; nr[i] = s; for (j = 0; j < n; j++) t[i][j].first = t[i][j].second = -1; won[i] = lost[i] = tie[i] = dal[i] = dostal[i] = pts[i] = hral[i] = 0; } scanf("%d", &z);getchar(); for (i = 0; i < z; i++) { scanf("%s - %s %d:%d", s, s2, &d, &h); getchar(); int a, b; a = names[s]; b = names[s2]; t[names[s]][names[s2]].first = d; t[names[s]][names[s2]].second = h; hral[a]++; hral[b]++; dal[a] += d; dal[b] += h; dostal[a] += h; dostal[b] += d; if (d > h) { won[a]++; lost[b]++; pts[a] += 3; } else if (d==h) { tie[a]++; tie[b]++; pts[a]++; pts[b]++; } else { won[b]++; lost[a]++; pts[b] += 3; } } int mlen = strlen(nr[0].c_str()); printf("RESULTS:\n"); for (i = 1; i < n; i++) if (strlen(nr[i].c_str()) > mlen) mlen = strlen(nr[i].c_str()); putchar('+'); for (i = 0; i < mlen; i++) putchar('-'); putchar('+'); for (i = 0; i < n; i++) {putchar('-');putchar('-');putchar('-');putchar('+');} putchar('\n'); putchar('|'); for (i = 0; i < mlen; i++) putchar(' '); putchar('|'); for (i = 0; i < n; i++) {putchar(nr[i][0]); nr[i][1] == 0 ? putchar(' ') : putchar(nr[i][1]); (nr[i][1] == 0 || nr[i][2] == 0) ? putchar(' ') : putchar(nr[i][2]); putchar('|');} putchar('\n'); putchar('+'); for (i = 0; i < mlen; i++) putchar('-'); putchar('+'); for (i = 0; i < n; i++) {putchar('-');putchar('-');putchar('-');putchar('+');} putchar('\n'); for (i = 0; i < n; i++) { putchar('|'); printf("%s", nr[i].c_str()); for (j = strlen(nr[i].c_str()); j < mlen; j++) putchar(' '); putchar('|'); for (j = 0; j < n; j++) { if (j == i) { printf(" X "); } else if (t[i][j].first == -1) { printf(" "); } else { printf("%d:%d", t[i][j].first, t[i][j].second); } putchar('|'); } putchar('\n'); putchar('+'); for (j = 0; j < mlen; j++) putchar('-'); putchar('+'); for (j = 0; j < n; j++) {putchar('-');putchar('-');putchar('-');putchar('+');} putchar('\n'); } printf("\nSTANDINGS:\n----------\n"); int c1 = n; int c3 = *max_element(hral, hral + n); int c4 = *max_element(won, won + n); int c5 = *max_element(tie, tie + n); int c6 = *max_element(lost, lost + n); int c7 = *max_element(dal, dal + n); int c8 = *max_element(dostal, dostal + n); int c9 = *max_element(pts, pts + n); int m; for (int p = 0; p < n; p++) { for (m = 0; won[m] == -1; m++); for (i = 0; i < n; i++) { if (i == m || won[i] == -1) continue; if (pts[m] < pts[i]) m = i; else if (pts[m] == pts[i]) { if (dal[m] - dostal[m] < dal[i] - dostal[i]) m = i; else if (dal[m] - dostal[m] == dal[i] - dostal[i]) { if (dal[m] < dal[i]) m = i; else if (dal[m] == dal[i]) { if (won[m] < won[i]) m = i; else if (won[m] == won[i]) { m = i; } } } } } prn(p+1, c1); printf(". %s", nr[m].c_str()); for (j = strlen(nr[m].c_str()); j < mlen; j++) putchar(' '); putchar(' '); prn(hral[m], c3); putchar(' '); prn(won[m], c4); putchar(' '); prn(tie[m], c5); putchar(' '); prn(lost[m], c6); putchar(' '); prn(dal[m], c7); putchar(':'); prn(dostal[m], c8); putchar(' '); prn(pts[m], c9); putchar('\n'); won[m] = -1; } printf("\n"); } return 0; }