2 条题解

  • 0
    @ 2025-12-7 17:25:00
    #include<bits/stdc++.h>  //引入头文件,引入输入输出系统功能
    using namespace std; //引入命名空间,将std::cin简化为cin, std::cout简化为cout
    struct student{
    	int id; //学号 
    	int ch; //语文 
    	int ma; //数学 
    	int en; //英语 
    	int zong;//总分 
    	int mc; //名次 
    }st[10000];
    bool cmp(student a,student b){
    	if(a.zong==b.zong){
    		if(a.ch+a.ma==b.ch+b.ma)
    			return max(a.ch,a.ma)>max(b.ch,b.ma);
    		else
    			return a.ch+a.ma>b.ch+b.ma;
    	}else
    		return a.zong>b.zong;
    }
    bool cmp2(student a,student b){
    	return a.id<b.id;
    }
    int main(){  //绩排序
    	int n;
    	cin>>n;
    	for(int i=0;i<n;i++){
    		cin>>st[i].ch>>st[i].ma>>st[i].en;
    		st[i].zong= st[i].ch+st[i].ma+st[i].en;
    		st[i].id=i;
    	}
    	sort(st,st+n,cmp);
    	int mingci=1;
    	st[0].mc=1;
    	for(int i=1;i<n;i++){
    		if(st[i].zong==st[i-1].zong and st[i].ch+st[i].ma==st[i-1].ch+st[i-1].ma and max(st[i].ch,st[i].ma)==max(st[i-1].ch,st[i-1].ma)){
    			st[i].mc=st[i-1].mc;
    			mingci++;
    		}else{
    			mingci++;
    			st[i].mc=mingci;
    		}
    	}
    	sort(st,st+n,cmp2);
    	for(int i=0;i<n;i++)
    		cout<<st[i].mc<<endl;
    	return 0; //程序结束的地方
    }
    
    
    
    

    信息

    ID
    1858
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    2
    已通过
    1
    上传者