A1030. 球队排名
时间限制:
1.0s 内存限制:
512.0MB
问题描述
计算机系学生会体育部组织了一次“酒井杯”足球联赛,有若干支球队参加,现在联赛已经圆满落幕,各队的积分、净胜球、进球数已经计算出来了,现在要你编写一个程序计算各支球队的排名,然后按照名次从高到低的顺序将各个球队的名字打印出来。
球队的规则如下:
1、先比较积分,积分高者名次在前;
2、如果积分相同则比较净胜球,净胜球多者名次在前;
3、如果积分、净胜球都相同则比较进球数,进球数多者名次在前;
4、对于积分、净胜球和进球数都一样的球队,根据他们的名称按照字典顺序排列。
现在假设各个球队的名称都是由大写英文字母组成,并且没有重名的球队。
球队的规则如下:
1、先比较积分,积分高者名次在前;
2、如果积分相同则比较净胜球,净胜球多者名次在前;
3、如果积分、净胜球都相同则比较进球数,进球数多者名次在前;
4、对于积分、净胜球和进球数都一样的球队,根据他们的名称按照字典顺序排列。
现在假设各个球队的名称都是由大写英文字母组成,并且没有重名的球队。
输入格式
第一行是一个正整数N(2<=N<=10),代表球队的数目
接下来有N行,每一行均包括一个字符串和3个整数,其中字符串代表球队的名称,长度在2与20之间,3个整数依次为球队的积分,净胜球和进球数,其中积分和进球数是0到100间的整数,净胜球的绝对值小于100。
接下来有N行,每一行均包括一个字符串和3个整数,其中字符串代表球队的名称,长度在2与20之间,3个整数依次为球队的积分,净胜球和进球数,其中积分和进球数是0到100间的整数,净胜球的绝对值小于100。
输出格式
共N行,每行输出一个字符串,即球队的名称。
样例输入
4 ACMILAN 5 1 5 SCHALKE 5 1 7 FENERBAHCE 4 -1 7 PSV 7 -1 2
样例输出
PSV
SCHALKE
ACMILAN
FENERBAHCE
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <algorithm>
- using namespace std;
- struct qiudui{
- char mingzi[30];
- int jifen;
- int jingsheng;
- int jinqiu;
- }buf[20];
- bool cmp(qiudui a, qiudui b){
- int tmp=strcmp(a.mingzi,b.mingzi);
- if(a.jifen!=b.jifen)
- return a.jifen>b.jifen;
- else if(a.jingsheng!=b.jingsheng)
- return a.jingsheng>b.jingsheng;
- else if(a.jinqiu!=b.jinqiu)
- return a.jinqiu>b.jinqiu;
- else
- return tmp<0;
- }
- int main(){
- int n;
- // do{
- scanf("%d",&n);
- // (n<2||n>10)&&printf("");
- // }while(n<2||n>10);
- for(int i=0;i<n;i++){
- // do{
- scanf("%s %d %d %d",&buf[i].mingzi,&buf[i].jifen,&buf[i].jingsheng,&buf[i].jinqiu);
- // (strlen(buf[i].mingzi)<2||strlen(buf[i].mingzi)>20||buf[i].jingsheng>100||buf[i].jingsheng<-100||buf[i].jifen<0||buf[i].jifen>100||buf[i].jinqiu<0||buf[i].jinqiu>100)&&printf("");
- // }while(strlen(buf[i].mingzi)<2||strlen(buf[i].mingzi)>20||buf[i].jingsheng>100||buf[i].jingsheng<-100||buf[i].jifen<0||buf[i].jifen>100||buf[i].jinqiu<0||buf[i].jinqiu>100);
- }
- sort(buf,buf+n,cmp);
- for(int i=0;i<n;i++){
- printf("%s\n",buf[i].mingzi);
- }
- system("pause");
- return 0;
- }