全部评论 1

  • AC code:

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1e5+5;
    int n;
    struct people
    {
    	string name;
    	int id,a,b,c;
    	int sum;
    }p[maxn];
    bool cmp(people x,people y)
    {
    	if(x.sum==y.sum)
    	{
    		if(x.a==y.a)
    		{
    			if(x.b==y.b)
    			{
    				return x.id<y.id;
    			}
    			return x.b>y.b;
    		}
    		return x.a>y.a;
    	}
    	return x.sum>y.sum;
    }
    int main()
    {
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	{
    		cin>>p[i].name;p[i].id=i;
    		cin>>p[i].a>>p[i].b>>p[i].c;
    		p[i].sum=p[i].a+p[i].b+p[i].c;
    	}
    	sort(p+1,p+n+1,cmp);
    	for(int i=1;i<=n;i++)
    	{
    		cout<<p[i].name<<" ";
    		cout<<p[i].sum<<endl;
    	}
    	return 0;
    }
    

    昨天 来自 广东

    0
    • cmp 函数里多比较了铜牌 c:
      题目要求是:总数相同 → 金牌相同 → 银牌相同 → 按输入顺序输出,而不是按铜牌排序。
      你的代码最后 return x.c > y.c; 会导致按铜牌降序排,不符合题意。

      昨天 来自 广东

      0

热门讨论