不懂就问
查看原帖
不懂就问
1268524
DX3906_ourstar楼主2024/7/13 17:09

样例能过,为啥会全WA啊

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

int n,sum;

struct student{//结构体,方便看 
	string name;
	int markFinal,markClassal,lw;//期末分数&班评分数&论文数 
	char isLeader,isWestern;//是否为干部/西部学生 
	int jxj = 0;//奖学金数量 
	int id;//输入次序 
	void clac(){
		//算奖学金的,挨个判断 
		if(markFinal > 80 && lw >= 1)          jxj += 8000;//院士奖学金 
		if(markFinal > 85 && markClassal > 80) jxj += 4000;//五四奖学金 
		if(markFinal > 90)                     jxj += 2000;//成绩优秀奖 
		if(markFinal > 85 && isWestern == 'Y') jxj += 1000;//西部奖学金 
		if(markClassal > 50 && isLeader == 'Y')jxj += 850;//班级贡献奖 
	}
}stu[105];

bool cmp(student a,student b){//比较函数 
	if(a.jxj != b.jxj){
		return a.jxj > b.jxj;//第一排序依据:奖学金 
	}else{
		return a.id < b.id;//第二排序依据:输入顺序 
	}
}

int main(){
	cin>>n;
	for(int i = 0;i < n;i ++){
		//输入 
		cin>>stu[i].name>>stu[i].markFinal>>stu[i].markClassal>>stu[i].isLeader>>stu[i].isWestern>>stu[i].lw;
		stu[i].id = i;
		//计算 
		stu[i].clac();//计算奖学金 
		sum += stu[i].jxj;//记录总和 
	}
	sort(stu,stu + n,cmp);//排序 
	cout<<stu[0].name<<endl<<stu[0].jxj<<endl<<sum;//输出 
	return 0;
}
2024/7/13 17:09
加载中...