大概错因:如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。 但是应该怎么改????
#include<bits/stdc++.h>
using namespace std;
#define maxn 1001
int n,tot;
struct student
{
string name;
int value_qimo;
int value_class;
string bool_ganbu;
string bool_weststu;
int count_art;
int ans;
int tot_prize_count;
};
vector<student>stu_list;
struct res
{
string name;
int money;
};
bool cmp(student x,student y)
{
return x.ans>y.ans;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
student temp;
cin>>temp.name>>temp.value_qimo>>temp.value_class>>temp.bool_ganbu>>temp.bool_weststu>>temp.count_art;
temp.ans=0;temp.tot_prize_count=0;
stu_list.push_back(temp);
}
for(int i=0;i<stu_list.size();i++)
{
//stu_list
if(stu_list[i].value_qimo>80 && stu_list[i].count_art>=1)
{
stu_list[i].ans+=8000;stu_list[i].tot_prize_count++;
}
else if(stu_list[i].value_qimo>85 && stu_list[i].value_class >80)
{
stu_list[i].ans+=4000;stu_list[i].tot_prize_count++;
}
else if(stu_list[i].value_qimo>90)
{
stu_list[i].ans+=2000;stu_list[i].tot_prize_count++;
}
else if(stu_list[i].value_qimo>85 && stu_list[i].bool_weststu=="Y")
{
stu_list[i].ans+=1000;stu_list[i].tot_prize_count++;
}
else if(stu_list[i].value_class>80 && stu_list[i].bool_ganbu=="Y")
{
stu_list[i].ans+=850;stu_list[i].tot_prize_count++;
}
tot+=stu_list[i].ans;
}
sort(stu_list.begin(),stu_list.end(),cmp);
//RaC 90 85 N N 1
//GqsbbvwAF 90 90 N N 8
cout<<stu_list.front().name<<endl<<stu_list.front().ans<<endl<<tot;
return 0;
}