#include #include #include #define D(x) char table[80][80][100]; char names[80][100]; int games[80][5]; int score[80][2]; int perm[80]; int max[4]; int N; int max_name = 0; int translate(char *name) { int i; for(i=0;i 0) { j++; i/=10; } /*D(printf("%i has len %i\n",m,j);)*/ return j; } void lline(int l, char ch) { int i; for(i=0;i m) m = num_len(games[i][l]); return m; } int get_max_s(int k) { int i; int m=0; for(i=0;i m) m = num_len(score[i][k]); D(printf("Max for score column %i is %i\n",k,m);) return m; } int cmp_won(const void *a, const void *b) { int aa = *(int*)a; int bb = *(int*)b; int c; c = games[bb][0] - games[aa][0]; return c; } int cmp_scored(const void *a, const void *b) { int aa = *(int*)a; int bb = *(int*)b; int c; c = score[bb][0] - score[aa][0]; return c; } int cmp_diff(const void *a, const void *b) { int aa = *(int*)a; int bb = *(int*)b; int c; c = score[bb][0] - score[bb][1] - score[aa][0] + score[aa][1]; return c; } int cmp_points(const void *a, const void *b) { int aa = *(int*)a; int bb = *(int*)b; int c; c = games[bb][3] - games[aa][3]; return c; } void sort() { int i; int j; int c; int m; for(i=0;i 0) m = j; else if(cmp_points(&perm[m], &perm[j]) == 0) if(cmp_diff(&perm[m], &perm[j]) > 0) m = j; else if(cmp_diff(&perm[m], &perm[j]) == 0) if(cmp_scored(&perm[m], &perm[j]) > 0) m = j; else if(cmp_scored(&perm[m], &perm[j]) == 0) if(cmp_won(&perm[m], &perm[j]) > 0) m = j; } c = perm[i]; perm[i] = perm[m]; perm[m] = c; } } void pperm() { int i; for(i=0;i10) { if(j+1<10) printf(" %i.",j+1); else printf("%i.",j+1); } else printf("%i.",j+1); printf(" %s", names[i]); lline(max_name - strlen(names[i]), ' '); lline(maxs[4] - num_len(games[i][4]) + 1, ' '); printf("%i", games[i][4]); lline(maxs[0] - num_len(games[i][0]) + 1, ' '); printf("%i", games[i][0]); lline(maxs[1] - num_len(games[i][1]) + 1, ' '); printf("%i", games[i][1]); lline(maxs[2] - num_len(games[i][2]) + 1, ' '); printf("%i", games[i][2]); lline(maxs[5] - num_len(score[i][0]) - num_len(score[i][0]) + 1, ' '); printf("%i:%i", score[i][0], score[i][1]); lline(maxs[3] - num_len(games[i][3]) + 1, ' '); printf("%i", games[i][3]); printf("\n"); } printf("\n"); } int main() { int i; int M; int j, k; int a, b; char one[200]; char two[200]; while(1) { for(i=0;imax_name) max_name = strlen(names[i]); } scanf("%i", &M); for(i=0;i b) { games[j][0]++; games[k][2]++; games[j][3]+=3; } else { games[j][2]++; games[k][0]++; games[k][3]+=3; } D(printf("%s %s %s\n", one, two, table[translate(one)][translate(two)]);) } format(); } return 0; }