#include #include using namespace __gnu_cxx; char team[100][110]; char shortteam[100][5]; int tabulka[100][8]; char printtab[100][8][20]; int delkatab[8]; int *tab2[110]; char mezery[] = " "; char pomlcky[] = "------------------------------------------------------------------------------------------------------------"; struct eqstr{ bool operator()(const char *s1, const char *s2){ return strcmp(s1, s2) == 0; } }; int sortit(const void *v1, const void *v2){ int *t2 = *(int**)v1, *t1 = *(int**)v2; if( t1[6] - t2[6] ) return t1[6] - t2[6]; if( (t1[4] - t1[5]) - (t2[4] - t2[5]) ) return (t1[4] - t1[5]) - (t2[4] - t2[5]); if( t1[4] - t2[4] ) return t1[4] - t2[4]; if( t1[1] - t2[1] ) return t1[1] - t2[1]; return t2[7] - t1[7]; } char vysledek [100][100][4]; void printit(int r, int x){ printf("%s%s", mezery + sizeof(mezery) - delkatab[x] + strlen(printtab[r][x])-1, printtab[r][x]); } int main(){ int tymu, zapasu, i, x, y, maxdelka,sa,sb; char a[1100], b[1400], score[5]; //vysledek = (char*)calloc(100*100*5, sizeof(char)); while(1){ scanf("%d", &tymu); if( tymu == 0 ) return 0; hash_map, eqstr> Map; maxdelka = 0; for(i = 0; i < tymu; i++){ scanf("%s", team[i]); Map[team[i]]=i; x = strlen(team[i]); if( x > maxdelka ) maxdelka = x; if(team[i][0]) shortteam[i][0] = team[i][0]; else shortteam[i][0] = ' '; if(team[i][1]) shortteam[i][1] = team[i][1]; else shortteam[i][1] = ' '; if(team[i][2]) shortteam[i][2] = team[i][2]; else shortteam[i][2] = ' '; shortteam[i][4] = 0; for( x = 0; x < 7; x++ ) tabulka[i][x] = 0; tabulka[i][7] = i; } for( x = 0; x < tymu; x++ ) for( y = 0; y < tymu; y++ ) if(x == y) strcpy(vysledek[x][y], " X "); else strcpy(vysledek[x][y], " "); scanf("%d", &zapasu); for(i = 0; i < zapasu; i++){ scanf("%s%*s%s%s", a, b, score); x = Map[a]; y = Map[b]; strcpy(vysledek[x][y], score); sa = score[0] - '0'; sb = score[2] - '0'; if( sa > sb ){ tabulka[x][1]++; tabulka[y][3]++; tabulka[x][6] += 3; } else if( sa < sb ){ tabulka[y][1]++; tabulka[x][3]++; tabulka[y][6] += 3; } else { tabulka[y][2]++; tabulka[x][2]++; tabulka[x][6]++; tabulka[y][6]++; } tabulka[x][4] += score[0]-'0'; tabulka[y][4] += score[2]-'0'; tabulka[x][5] += score[2]-'0'; tabulka[y][5] += score[0]-'0'; tabulka[x][0]++; tabulka[y][0]++; } printf("RESULTS:\n"); printf("+%s+", pomlcky + sizeof(pomlcky) - maxdelka - 2); for( y = 0; y < tymu; y++ ) printf("---+"); printf("\n"); printf("|%s|", mezery + sizeof(mezery) - maxdelka - 1); for( y = 0; y < tymu; y++ ){ printf("%s|", shortteam[y]); } printf("\n"); for( x = 0; x < tymu; x++ ){ printf("+%s+", pomlcky + sizeof(pomlcky) - maxdelka - 2); for( y = 0; y < tymu; y++ ) printf("---+"); printf("\n"); printf("|%s%s|", team[x], mezery + sizeof(mezery) - maxdelka + strlen(team[x]) - 1); for( y = 0; y < tymu; y++ ){ printf("%s|", vysledek[x][y]); } printf("\n"); } /////////////////////////////////////////////////////////////////////////// printf("+%s+", pomlcky + sizeof(mezery) - maxdelka - 2); for( y = 0; y < tymu; y++ ){ printf("---+"); tab2[y] = tabulka[y]; } printf("\n\nSTANDINGS:\n----------\n"); qsort( tab2, tymu, sizeof(int*), sortit); for( y = 0; y < 7; y++ ){ delkatab[y]=0; } for( y = 0; y < tymu; y++ ){ sprintf(printtab[y][0], "%d", y+1); x = strlen( printtab[y][0] ); if( x > delkatab[0] ) delkatab[0] = x; sprintf(printtab[y][1], "%d", tab2[y][0]); x = strlen( printtab[y][1] ); if( x > delkatab[1] ) delkatab[1] = x; sprintf(printtab[y][2], "%d", tab2[y][1]); x = strlen( printtab[y][2] ); if( x > delkatab[2] ) delkatab[2] = x; sprintf(printtab[y][3], "%d", tab2[y][2]); x = strlen( printtab[y][3] ); if( x > delkatab[3] ) delkatab[3] = x; sprintf(printtab[y][4], "%d", tab2[y][3]); x = strlen( printtab[y][4] ); if( x > delkatab[4] ) delkatab[4] = x; sprintf(printtab[y][5], "%d:%d", tab2[y][4], tab2[y][5]); x = strlen( printtab[y][5] ); if( x > delkatab[5] ) delkatab[5] = x; sprintf(printtab[y][6], "%d", tab2[y][6]); x = strlen( printtab[y][6] ); if( x > delkatab[6] ) delkatab[6] = x; } for( y = 0; y < tymu; y++ ){ printit(y, 0); printf(". %s%s ", team[tab2[y][7]], mezery + sizeof(mezery) - maxdelka + strlen(team[tab2[y][7]]) - 1); printit(y, 1); printf(" "); printit(y, 2); printf(" "); printit(y, 3); printf(" "); printit(y, 4); printf(" "); printit(y, 5); printf(" "); printit(y, 6); printf("\n"); } printf("\n"); } }