CF 19A World Football Cup

注意字符串大小的比较及结构体的二次排序

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define size 60
struct node{
	int goal,mgoal,point,dif;
	char name[35];
}team[size];
int n;
int find(char na[])
{
	int i;
	for(i=0;i<n;i++)
	{
		if(strcmp(na,team[i].name)==0)
			return i;
	}
	return -1;
}
int cmp2(const void*a,const void*b)
{
	node*c=(node*)a;
	node*d=(node*)b;
	return strcmp(c->name,d->name);
}

int cmp(const void*a,const void*b)
{
	node*c=(node*)a;
	node*d=(node*)b;
	if(c->point!=d->point)
		return(c->point < d->point)?1:-1;
	else 
	{
		if(c->dif != d->dif)
			return(c->dif < d->dif)?1:-1;
		else
		{
			return (c->goal < d->goal)?1:-1;
		}
	}
}
int main()
{
	int i,j,k,l,m;
	while(scanf("%d",&n)!=EOF)
	{
		getchar();
		memset(team,0,sizeof(team));
		for(i=0;i<n;i++)
		{
			gets(team[i].name);
		}
		for(i=0;i<n*(n-1)/2;i++)
		{
			char na[35]="",nb[35]="";
			int a,b;
			char t[65]="";
			scanf("%s",&t);
			int g;
			for(j=0;j<strlen(t);j++)
			{
				if(t[j]=='-')
				{
					g=j;
					break;
				}
			}
			for(j=0;j<g;j++)
			{
				na[j]=t[j];
			}
			na[j+1]='\0';
			for(j=g+1;j<strlen(t);j++)
			{
				nb[j-g-1]=t[j];
			}
			nb[strlen(t)-g]='\0';

			a=find(na);
			b=find(nb);
			int ga,gb;
			scanf("%d:%d",&ga,&gb);
			team[a].goal+=ga;
			team[b].goal+=gb;
			team[a].mgoal+=gb;
			team[b].mgoal+=ga;
		
			if(ga!=gb)
			{
				if(ga>gb)
					team[a].point+=3;
				else
					team[b].point+=3;

			}
			else
			{
				team[a].point++;
				team[b].point++;
			}
		}
		for(i=0;i<n;i++)
		{
			team[i].dif=team[i].goal-team[i].mgoal;
		}
		qsort(team,n,sizeof(team[0]),cmp);
		qsort(team,n/2,sizeof(team[0]),cmp2);
		for(i=0;i<n/2;i++)
		{
			puts(team[i].name);
		}
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值