又双叒叕来求助了,换了个思路(有注释,求大佬debug)
查看原帖
又双叒叕来求助了,换了个思路(有注释,求大佬debug)
1460836
Retribution321楼主2024/11/22 16:53
#include<bits/stdc++.h>
using namespace std;
#define pzq(a,b,c) for(int a=b;a<c;a++)
#define qzp(a,b,c) for(int a=b;a>=c;a--)

struct chengji{
		int chinese,math,english;
	};
bool cmp(int a,int b){
	return a>b;
}
int main(){
	int n;
	cin>>n;
	chengji a[n+1];int score[n+1];
	pzq(i,1,n+1){
		cin>>a[i].chinese>>a[i].math>>a[i].english;
		score[i]=a[i].chinese+a[i].math+a[i].english;//输入数据,统计总分 
	}
	sort(score+1,score+n+1,cmp);//将成绩由高到低排序 
	int num=0;
	pzq(i,1,6){//输出五次 
		pzq(j,1,n+1){
			if(score[i]=a[j].chinese+a[j].math+a[j].english){//从最高分开始寻找对应分数的人 
				if(num!=0){//判断前面是否已有同分的人被选中 
					if(a[j].chinese>a[num].chinese)num=j;continue;//如果挑战者的语文分数大于擂主,则成为擂主
					if(a[j].chinese<=a[num].chinese)continue;//挑战失败则跳过 
				}
				else num=j;continue;//若前面没有重分者,则自己成为擂主 
			}
			else continue;
		}
		cout<<num<<" "<<score[i]<<endl;
		a[num].chinese=0;a[num].math=0;a[num].english=0;
		num=0;//重置编号并去重 
	}
	return 0;
}
2024/11/22 16:53
加载中...