UVA10194
来源:互联网 发布:怎么查淘宝账号权重 编辑:程序博客网 时间:2024/06/08 07:26
思路:模拟题。。不过有些麻烦。。
排名规则要处理好,特别是最后两条,前一个是场次少的排在前面,后面一个是要按字典序排列,不分大小写。。。我就是在这个地方WA了好多次。。。。无奈。。
#include<stdio.h>#include<string.h>#include<ctype.h>#include<stdlib.h>struct Team{Team(){ point = 0; play = 0; win = 0; ties = 0; loss = 0; difference = 0; score = 0; against = 0;}int point;int play;int win;int ties;int loss;int difference;int score;int against;char name1[50];char name2[50];};int cmp(void const *a, void const *b){struct Team * c = (Team *)a;struct Team * d = (Team *)b;if (c -> point != d -> point)return d -> point - c -> point;if (c -> win != d -> win)return d -> win - c -> win;if (c -> difference != d -> difference)return d -> difference - c -> difference;if (c -> score != d -> score)return d -> score - c -> score;if (c -> play != d -> play)return c -> play - d -> play;return strcmp(c -> name2, d -> name2);}int main(){int cas, n, m;char s[110];scanf("%d", &cas);getchar();while (cas--){gets(s);scanf("%d", &n);Team team[1000];getchar();for(int i = 0; i < n; i++){gets(team[i].name1);for(int j = 0; j < strlen(team[i].name1); j++)team[i].name2[j] =tolower(team[i].name1[j]); team[i].name2[strlen(team[i].name1)] = '\0';}scanf("%d", &m);getchar();while (m--){int cnt = 0;char t1[50], t2[50], ch;while (ch = getchar(), ch != '#')t1[cnt++] = ch;t1[cnt] = '\0';int a, b;scanf("%d", &a);getchar();scanf("%d", &b);getchar();gets(t2);for(int i = 0; i < n; i++){if (strcmp(team[i].name1, t1) == 0){if (a > b){team[i].point += 3;team[i].difference += (a - b);team[i].win++;}else if (a == b){team[i].point += 1;team[i].ties++;}else{team[i].loss++;team[i].difference += (a - b);}team[i].play++;team[i].score += a;team[i].against += b;}if (strcmp(team[i].name1, t2) == 0){if (b > a){team[i].point += 3;team[i].difference += (b - a);team[i].win++;}else if (a == b){team[i].point += 1;team[i].ties++;}else{team[i].loss++;team[i].difference += (b - a);}team[i].play++;team[i].score += b;team[i].against += a;}}}qsort(team, n, sizeof(team[0]), cmp);puts(s);for(int i = 0; i < n; i++){printf("%d) %s %dp, %dg (%d-%d-%d), %dgd (%d-%d)\n", i + 1, team[i].name1, team[i].point, team[i].play, team[i].win, team[i].ties, team[i].loss, team[i].difference, team[i].score, team[i].against);}if (cas)printf("\n");}return 0;}
- UVA10194
- UVA10194-足球
- UVA10194 - Football (aka Soccer)
- UVa10194 Football (aka Soccer)
- UVA10194 Football (aka Soccer)
- UVA10194 Football (aka Soccer) 排序
- Football (aka Soccer) -uva10194 模拟题
- 骨骼拉伸之translate方式
- Shell编程学习---第一篇:文件安全与权限
- Asp.net三层架构
- 关于移动Web性能的5个神话
- js中阻止时间冒泡的方法
- UVA10194
- 继承和组合
- 校招季——编程题目(1-2)
- [C++基础]C++笔试面试的题目类型
- IOS开发之----代码块的使用(二)
- 计算机开机启动过程原理详解
- hdu3466 Proud Merchants
- uva 311 Packets
- 为什么生成的core 文件大小为0字节