2 条题解

  • 0
    @ 2026-1-30 10:48:43
    #include<bits/stdc++.h>
    using namespace std;
    struct student{
    	int id;
    	string name;
    	int zmc;
    	int smc;
    	int jinbu;
    }st[55];
    bool cmp(student a, student b){
    	if(a.jinbu==b.jinbu)
    		return a.id<b.id;
    	else
    		return a.jinbu>b.jinbu;
    }
    int main(){ //进步最大的同学
    	int n;
    	cin>>n;
    	for(int i=0;i<n;i++) {//名字 
    		cin>>st[i].name;
    		st[i].id=i+1; 
    	}
    	for(int i=0;i<n;i++) //当前名次 
    		cin>>st[i].zmc;
    	for(int i=0;i<n;i++){//上次名次 
    		cin>>st[i].smc;
    		st[i].jinbu=st[i].smc-st[i].zmc;
    	}
    	sort(st,st+n,cmp);
    	for(int i=0;i<n;i++){
    		if(st[i].jinbu==st[0].jinbu)
    			cout<<st[i].id<<" "<<st[i].name<<endl;
    	}
    	return 0;
    }
    
    
    
    
    • 0
      @ 2024-1-15 14:59:05
      #include<iostream>
      #include<algorithm>
      using namespace std;
      struct student{
      	char name[20];
      	int a1,a2,a3,id;
      }s[55];
      bool cmp(student a,student b){
      	if(a.a3==b.a3)
      		return a.id<b.id;
      	else
      		return a.a3>b.a3;
      }
      int main(){ //C++16级 进步最大的同学 
      	 int n,m;
      	 cin>>n; //输入n名同学的信息 
      	 for(int i=0;i<n;i++){
      	 	cin>>s[i].name; //输入每名同学的名字 
      	 	s[i].id=i+1; //他的id 
      	 }
      	 	
      	for(int i=0;i<n;i++)
      	 	cin>>s[i].a1; //输入第一次考试名次 
      	for(int i=0;i<n;i++){
      		cin>>s[i].a2; //输入第二次考试名次 
      		s[i].a3=s[i].a2-s[i].a1; //进步名次 
      	}
      	sort(s,s+n,cmp); //按照进步名次排序  
      	for(int i=0;i<n;i++)//输出进步最大的同学 
      		if(s[i].a3==s[0].a3) //如果某位同学的进步名次和第一名一样,也输出	
      	 		cout<<s[i].id<<" "<<s[i].name<<endl;
      	return 0;
      }
      
      
      • 1

      信息

      ID
      1175
      时间
      1000ms
      内存
      256MiB
      难度
      4
      标签
      (无)
      递交数
      20
      已通过
      16
      上传者