1 solutions

  • 1
    @ 2025-4-2 19:37:21
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e4+10;
    struct Stu{
    	int t1,t2,maxv; 
    	int yuwen,shuxue,yingyu;
    	int id,rank; 
    }s[N];
    bool cmp1(Stu a,Stu b)
    {
    	if(a.t1>b.t1) return 1;
    	if(a.t1==b.t1&&a.t2>b.t2) return 1;
    	if(a.t1==b.t1&&a.t2==b.t2&&a.maxv>b.maxv) return 1;
    	return 0;
    }
    bool cmp2(Stu a,Stu b)
    {
    	if(a.id<b.id) return 1;
    	return 0;	
    } 
    int main()
    {
    	int n;
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	{
    		cin>>s[i].yuwen>>s[i].shuxue>>s[i].yingyu;
    		s[i].t1=s[i].yuwen+s[i].shuxue+s[i].yingyu;
    		s[i].t2=s[i].yuwen+s[i].shuxue;
    		s[i].maxv=max(s[i].yuwen,s[i].shuxue);
    		s[i].id=i;
    	}
    	sort(s+1,s+n+1,cmp1); //按照指定规则进行排名 
    	for(int i=1;i<=n;i++) //分数相同的排名合并 
    	{
    		s[i].rank=i;
    		if(s[i].t1==s[i-1].t1&&s[i].t2==s[i-1].t2&&s[i].maxv==s[i-1].maxv)
    		{
    			s[i].rank=s[i-1].rank;
    		}
    	}
    	sort(s+1,s+n+1,cmp2); //按照编号从小到大排序 
    	for(int i=1;i<=n;i++)
    	{
    		cout<<s[i].rank<<endl;
    	}
    	return 0;
    }
    
    
    • 1

    Information

    ID
    2169
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    9
    Tags
    # Submissions
    18
    Accepted
    2
    Uploaded By