#include #include #include char tim[100][110]; int zapasy[100][100]; int golov[100][100][2]; int vyhier[100]; int prehier[100]; int remiz[100]; int go1[100]; int go2[100]; int bodov[100]; int tabulka[100]; int hier[100]; int porovnaj(const void *a, const void *b) { int t1, t2; int i, j; i = *(const int *)a; j = *(const int *)b; if (bodov[i] < bodov[j]) return 1; if (bodov[i] > bodov[j]) return -1; t1 = go1[i] - go2[i]; t2 = go1[j] - go2[j]; if (t1 < t2) return 1; if (t1 > t2) return -1; if (go1[i] < go1[j]) return 1; if (go1[i] > go1[j]) return -1; if (vyhier[i] < vyhier[j]) return 1; if (vyhier[i] > vyhier[j]) return -1; if (j > i) return -1; if (j < i) return 1; return 0; } int main(void) { char line[1024]; int timov; int zapasov; char *s; int tim1, tim2, skore1, skore2; int max = 0; int i, j; while(1) { fgets(line, sizeof(line), stdin); line[strlen(line)-1] = '\0'; timov = atoi(line); if (timov == 0) return 0; for (i = 0; i < timov; i++){ fgets(tim[i], 110, stdin); tim[i][strlen(tim[i]) -1] ='\0'; if (strlen(tim[i]) > max) max = strlen(tim[i]); } fgets(line, sizeof(line), stdin); line[strlen(line)-1] = '\0'; zapasov = atoi(line); for (i = 0; i < timov; i++) { vyhier[i] = 0; prehier[i] = 0; remiz[i] = 0; go1[i] = 0; go2[i] = 0; hier[i] = 0; } for (i = 0; i < timov; i++) tabulka[i] = i; for (i = 0; i < timov; i++) for (j = 0; j < timov; j++) zapasy[i][j] = 0; for (i = 0; i < zapasov; i++){ fgets(line, sizeof(line), stdin); line[strlen(line) -1] ='\0'; s = strtok(line, " "); for (j = 0; j < timov; j++) if (!strcmp(s, tim[j])) tim1 = j; s = strtok(NULL, " "); s = strtok(NULL, " "); for (j = 0; j < timov; j++) if (!strcmp(s, tim[j])) tim2 = j; s = strtok(NULL, " "); s = strtok(s, ":"); skore1 = atoi(s); s = strtok(NULL, ":"); skore2 = atoi(s); zapasy[tim1][tim2]++; golov[tim1][tim2][0] = skore1; golov[tim1][tim2][1] = skore2; if (skore1 > skore2) { vyhier[tim1]++; prehier[tim2]++; }; if (skore1 < skore2) { vyhier[tim2]++; prehier[tim1]++; }; if (skore1 == skore2) { remiz[tim2]++; remiz[tim1]++; }; go1[tim1]+=skore1; go2[tim1]+=skore2; go1[tim2]+=skore2; go2[tim2]+=skore1; hier[tim1]++; hier[tim2]++; } printf("RESULTS:\n"); printf("+"); for (i = 0; i < max; i++) printf("-"); for (i = 0; i < timov; i++) printf("+---"); printf("+\n"); printf("|"); for (i = 0; i < max; i++) printf(" "); printf("|"); for (i = 0; i < timov; i++) printf("%3.3s|", tim[i]); printf("\n+"); for (i = 0; i < max; i++) printf("-"); for (i = 0; i < timov; i++) printf("+---"); printf("+\n"); for (i = 0; i < timov; i++) { bodov[i] = vyhier[i] * 3 + remiz[i]; } for (i = 0; i < timov; i++) { printf("|"); printf("%-*.*s", max, max, tim[i]); printf("|"); for (j = 0; j < timov; j++) { if (i == j) { printf(" X |"); continue; } if (zapasy[i][j]) { printf("%d:%d|", golov[i][j][0], golov[i][j][1]); } else { printf(" |"); } } printf("\n+"); for (j = 0; j < max; j++) printf("-"); for (j = 0; j < timov; j++) printf("+---"); printf("+\n"); } printf("\n\nSTANDINGS:\n----------\n"); qsort(tabulka, sizeof(int), timov, porovnaj); for (i = 0; i < timov; i++) { printf("%d. %-*.*s %d %d %d %d %d:%d %d\n", i+1, max, max, tim[tabulka[i]], hier[tabulka[i]], vyhier[tabulka[i]], remiz[tabulka[i]], prehier[tabulka[i]], go1[tabulka[i]], go2[tabulka[i]], bodov[tabulka[i]]); } } return 0; }